![](/img/trans.png)
[英]How can I read an value or deserialize this JSON-structure in Javascript?
[英]How can I deserialize a JSON array into a native .net data structure?
我有看起來像這樣的JSON:
{
"records": [{
"skills": "",
"u_past_assignment_groups": "",
"urgency": "3",
"correlation_id": "",
"u_program_name": "",
"u_software_name": "",
"group_list": ""
}]
}
(這是一個截短的版本。)但要點是,它是鍵,值對的單元素數組。
在本機JavaScript中,使用JSON.parse
或eval
將這個JSON轉換為鍵/值對的實際數組是一個非常簡單的步驟,但是,在.Net中,我無法弄清楚如何將該JSON反序列化為有意義的任何東西。 我嘗試了JavaScriptSerializer.Deserialize
和JavaScriptSerializer.DeserializeObject
可以提供的每個排列。 無論我嘗試什么,我都會繼續遇到無法反序列化或無法投射的錯誤。 有人可以看看這個代碼片段,並告訴我如何(在本機.Net中)將其反序列化為鍵/值對的列表或數組嗎?
是否需要創建自己的對象來存儲此數據? 我的意思是,我不想這樣做。 看起來它應該輕松符合本機.net數據結構。
//process response
Stream respStream = resp.GetResponseStream();
StreamReader respReader = new StreamReader(respStream);
string response = respReader.ReadToEnd();
respStream.Close();
JavaScriptSerializer jsDes = new JavaScriptSerializer();
//***This is the part I can't figure out.***
var objResp = jsDes.DeserializeObject(response);
Dictionary<string, string>[] dicResp = (Dictionary<string, string>[])objResp;
//******************************************
pOutput.InnerText = "Incident Number: " + dicResp[0]["key"];
您沒有說是否可以使用第三方庫,但我認為Json.NET比JavascriptSerializer更好(更多功能和性能)。 您可以使用以下方法完成所需的操作:
Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(response);
有關Json.Net的更多信息: http ://james.newtonking.com/json
這應該工作。 我將您的示例粘貼到input.txt文件中。
string json = File.ReadAllText("input.txt");
JavaScriptSerializer jsDes = new JavaScriptSerializer();
Dictionary<string, object> objResp = (Dictionary<string, object>)jsDes.DeserializeObject(json);
Object[] records =(Object[])objResp["records"];
Dictionary<string,object> results= (Dictionary<string,object>) records[0];
Console.WriteLine(result["urgency"]);
由於您的JSON結構,我認為讀取起來很復雜。 您將“ records”作為一個空數組中的第一個條目(使用{}打開和關閉JSON)。 此外,在記錄內部,您還有另一個未索引的數組,其第一個條目是包含鍵/值對的實際字典。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.