我一直在尝试使用json.net(https://dl.dropboxusercontent.com/u/2976553/json)解析json块,但是它未能说明json对象后面有文本。但是,如果您查看它在哪里引发异常
if (checkAdditionalContent)
{
if (reader.Read() && reader.TokenType != JsonToken.Comment )
throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
}
我检查了TokenType,它EndObject
似乎不应该生成异常。我也修改了代码以使其忽略EndOjbect
,但是它似乎没有解析任何内容。
我正在用这个..
DataSet ds = JsonConvert.DeserializeObject<DataSet>(response);
我已经将json粘贴到许多在线检查器中,他们都将其报告为有效数据。
它不起作用的原因是因为您的JSON数据不符合将其反序列化为DataSet所需的结构。如果您查看文档中的示例,则数据的结构应如下所示:
{
"table1" :
[
{
"column1" : "value1",
"column2" : "value2"
},
{
"column1" : "value3",
"column2" : "value4"
}
],
"table2" :
[
{
"column1" : "value1",
"column2" : "value2"
},
{
"column1" : "value3",
"column2" : "value4"
}
]
}
换句话说,外部对象包含代表表的属性。属性名称对应于表的名称,并且值是对象的所有数组,其中每个对象代表表中的一行。对象的属性与列名相对应,其值是行数据。行数据值必须是简单类型,例如字符串,整数,布尔值等。(如果使用Json.Net
6.0或更高版本,则还支持简单类型数组和嵌套数据表。)
您的JSON数据要比这复杂得多,并且深度嵌套。除非您编写自己的自定义JsonConverter来做,否则您将无法使Json.Net将其反序列化为DataSet。而且我认为这样做是不值得的。
相反,我将考虑以下其他替代方法之一:
JObject
并使用Json.Net的LINQ-to-JSON API导航和提取所需的数据。这是一个可能对此有所帮助的示例。文档以及StackOverflow上还有许多其他示例。dynamic
。假设您非常了解数据的结构,这种方法可以很容易地获取数据,但是却失去了智能感知和编译时检查。问题内容: 我正在与Json.Net解析数组。我正在尝试做的是将名称/值对从数组中拉出,并在解析JObject时将它们分配给特定的变量。 这是数组中的内容: 这是我在C#中获得的东西: 我是JSON和Json.Net的新手,因此它可能是其他人的基本解决方案。我基本上只需要在foreach循环中分配名称/值对,以便可以在前端输出数据。有人做过吗? 问题答案: 您可以这样获得数据值: 小提琴:http
问题内容: 我是使用AngularJS的新手,但在解析json响应时遇到问题。这是我正在使用的HTML代码: 这是使用AngularJS的Javascript代码: HTML使用服务器返回的JSON显示变量$ scope.response,但顶部列表中未显示任何内容。JSON的格式完美,但是$ scope.cars变量似乎始终为空。 我究竟做错了什么? 非常感谢, GA 问题答案: $ http.
问题内容: 我正在用Python阅读JSON文件,其中包含许多字段和值(约8000条记录)。Env:Windows 10,Python 3.6.4;码: 这样我得到一个错误。下面是堆栈跟踪: 伴随着我,我尝试了 与此相关,我的程序运行了很长时间,然后挂起,没有任何输出。 我搜索了几乎与此相关的所有主题,但找不到解决方案。 注意:JSON数据是有效的,因为当我在Postman /任何REST客户端上
问题内容: 我在C#中有一个类似以下的字符串。我需要遍历并创建HTML表输出。我尝试使用JSON.NET,但无法弄清楚如何检索键(名称,年龄和工作)。 表格格式为 任何帮助将不胜感激。 Dave提供的代码在这里是理想的解决方案..但是它适用于.NET 4.0 ..我已经将JSON.NET和以下代码用于.NET 3.5 使用Newtonsoft.Json.Linq; 问题答案: 您可以使用.NET
问题内容: 我有一个.NET项目。我正在使用JSON.NET库。我需要使用该库来解析一些JSON。我的JSON看起来像这样: 该对象实际上只是键/值对的列表。我试图弄清楚如何使用JSON.NET来1)解析此JSON和2)通过键/值对进行循环。有没有办法做到这一点?如果是这样,怎么办? 我唯一看到的是将反序列化为强类型的对象。 非常感谢! 问题答案: 您可以反序列化为 由于JObject实现,因此您
类: JSON数据: {“列表”:[{“类型”:0,“文本”:“文本1”},{“类型”:1,“问题”:“文本2”}]} 类来保存列表项: 一切顺利,我为JSON字符串中的type和text获得了正确的值。但逮捕仍为空。