如何将 JSON 数组反序列化为本机 .net 数据结构
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
这应该有效。我将您的示例粘贴到输入.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 结构,阅读起来很复杂。您将"记录"作为空数组中的第一个条目(使用 {} 打开和关闭 JSON)。此外,在记录中,您还有另一个未编制索引的数组,其第一个条目是包含键/值对的实际字典。
相关文章:
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- 在iOS和Android上使用React native时,我还能使用本机第三方lirbraries吗
- javascript函数访问ios本机功能
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- 在浏览器中检测本机或第三方PDF插件
- 将事件发送到javascript文档的react本机模块是否正确
- 将对应用内购买的支持构建为react本机代码
- 如何在Windows上用javascript构建本机应用程序
- 在视图中渲染多个按钮以编程方式进行本机反应
- 在本机挂钩之前加载可安装挂钩
- 如何使用UI Automation JavaScript Reference for iOS appium获取本机应用程
- 控制台中的“function floor(){[本机代码]}”是什么
- 如何将chrome.tabCapture流从js传递到c++PNACL本机代码
- WKWebview-Javascript和;本机代码
- 将回调/函数从本机发送到javascript
- 为什么我得到Chrome本机消息“;找不到指定的本机消息传递主机&”;
- 检测未绑定的本机函数,如“Array.push”
- 离子 - 本机对话框
- 如何获取 jQuery 以触发本机自定义事件处理程序
- 如何将 JSON 数组反序列化为本机 .net 数据结构