Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将JSON数组反序列化为本机.net数据结构?_Javascript_C#_Asp.net_Json - Fatal编程技术网

Javascript 如何将JSON数组反序列化为本机.net数据结构?

Javascript 如何将JSON数组反序列化为本机.net数据结构?,javascript,c#,asp.net,json,Javascript,C#,Asp.net,Json,我有这样的JSON: { "records": [{ "skills": "", "u_past_assignment_groups": "", "urgency": "3", "correlation_id": "", "u_program_name": "", "u_software_name": "", "group_list": "" }] } (这是一个被截断的版本。)但关键是它是一个由键、值对组成的单元素数组 在本机J

我有这样的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"];
//进程响应
Stream respStream=resp.GetResponseStream();
StreamReader respReader=新StreamReader(respStream);
字符串响应=respreder.ReadToEnd();
respStream.Close();
JavaScriptSerializer jsDes=新的JavaScriptSerializer();
//***这是我搞不懂的部分***
var objResp=jsDes.DeserializeObject(响应);
Dictionary[]dicResp=(Dictionary[])objResp;
//******************************************
pOutput.InnerText=“事件编号:”+DICREP[0][“键”];

这应该行得通。我将您的示例粘贴到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"]);
string json=File.ReadAllText(“input.txt”);
JavaScriptSerializer jsDes=新的JavaScriptSerializer();
字典objResp=(字典)jsDes.DeserializeObject(json);
对象[]记录=(对象[])对象[]记录[];
字典结果=(字典)记录[0];
Console.WriteLine(结果[“紧迫性]);
我认为由于您的JSON结构,阅读起来很复杂。您将“records”作为空数组中的第一个条目(使用{}打开和关闭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"]);
string json=File.ReadAllText(“input.txt”);
JavaScriptSerializer jsDes=新的JavaScriptSerializer();
字典objResp=(字典)jsDes.DeserializeObject(json);
对象[]记录=(对象[])对象[]记录[];
字典结果=(字典)记录[0];
Console.WriteLine(结果[“紧迫性]);
我认为由于您的JSON结构,阅读起来很复杂。您将“records”作为空数组中的第一个条目(使用{}打开和关闭JSON)。
此外,在记录中,还有另一个未索引的数组,其第一项是包含键/值对的实际字典。

您没有说是否可以使用第三方库,但我认为Json.NET比JavascriptSerializer更好(更多功能和性能)。您可以通过以下方式完成所需:

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(response);
Dictionary values=JsonConvert.DeserializeObject(响应);

关于Json.Net的更多信息:

您没有说是否可以使用第三方库,但我认为Json.Net比JavascriptSerializer更好(更多功能和性能)。您可以通过以下方式完成所需:

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(response);
Dictionary values=JsonConvert.DeserializeObject(响应);

关于Json.Net的更多信息:

这有点让人困惑,但请不要仅针对代码块使用代码片段。为此使用代码块。代码段用于在浏览器代码中运行。我明白了。道歉。我读过这个论坛,但很少发帖。我会记住这一点。这有点让人困惑,但请不要只对代码块使用代码片段。为此使用代码块。代码段用于在浏览器代码中运行。我明白了。道歉。我读过这个论坛,但很少发帖。我会记住这一点。我在搜索解决方案时多次看到这个库被引用,但最终我想学习如何使用本机.net对象。我在问题中附带提到了这一点。最终我下载了这个库,并对它的性能感到满意。感谢您抽出时间回答我的问题。我在搜索解决方案时多次看到此库被引用,但最终我想学习如何使用本机.net对象。我在问题中附带提到了这一点。最终我下载了这个库,并对它的性能感到满意。谢谢你花时间回答我的问题。是的。不幸的是,在我的例子中,我无法控制JSON的格式。你的解决方案奏效了。(必须在最后一行的“结果”中添加一个“s”,以使变量匹配)。因为我要求使用本机.net解决方案,而您给了我一个,所以我将此标记为答案。最后,我从codeplex下载了JSON.net库。它看起来更强大。感谢您抽出时间回答我的问题。我遵守您使用图书馆的决定。这是一种更有效、更好的做法。不客气!对不幸的是,在我的例子中,我无法控制JSON的格式。你的解决方案奏效了。(必须在最后一行的“结果”中添加一个“s”,以使变量匹配)。因为我要求使用本机.net解决方案,而您给了我一个,所以我将此标记为答案。最后,我从codeplex下载了JSON.net库。它看起来更强大。感谢您抽出时间回答我的问题。我遵守您使用图书馆的决定。这是一种更有效、更好的做法。不客气!