问题标签 [json.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1389 浏览

dictionary - 使用 json.net 反序列化通用字典

我有一个看起来像这样的课程:

当我尝试使用 Json.NET 反序列化此类时:

我收到错误Expected a JsonObjectContract or JsonDictionaryContract for type 'System.Collections.Generic.Dictionary`2[System.Int32,MyClass[]]', got 'Newtonsoft.Json.Serialization.JsonDictionaryContract'。

此错误消息是什么意思,我该如何解决?

0 投票
2 回答
8452 浏览

c# - 属性名称不同时的 LINQ 和 JSON.NET

我正在尝试将一些 JSON 内容解析为 C#。对于更简单的情况,我在 JSON.NET 方面取得了巨大成功,并且非常感谢 LINQ 提供程序提供的简洁方法。这是一个示例,我正在下载有关地图中图层的信息并填写名为(令人惊讶!)图层的类的一些属性:

您可以查看此 url 以了解该方法的 JSON 详细信息:http ://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/1?f=json&pretty=true 。但是,当我需要将与地图图层关联的各个数据字段转换为 DataTable 甚至只是字典结构时,问题就出现了。问题在于,与 RSS 提要或其他一致格式不同,字段名称和字段数量会因地图层而异。这是我运行查询的示例:

在 layer.FindFeatureById 中运行的代码是这样的,包括我卡住的部分:

您可以通过访问此 URL 看到输出的 JSON(注意剪切粘贴时的编码):href="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/1 /query?f=json&outFields=*&where=FACILITYID%3d'13141'

所以我的问题(终于!)是这个。如何循环通过“功能”中的“属性”集合来获取实际的字段值。你可以看到我已经想出了如何从 fieldAliases 中获取字段名称,但在那之后我很难过。我一直在修补一个看起来像这样的文件的 JsonReader,但仍然没有乐趣:

0 投票
1 回答
11311 浏览

c# - JSON.NET 和使用 LINQ 的数组

我使用 Json.net问答查看了这个Parsing JSON ,它与我需要的很接近。关键的区别是我需要解析一组 x,y 对,每条记录形成一行或多行。这是我的输入示例

(查看http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/9/query?outFields= *&where=OBJECTID%3C20&f=pjson 以获取完整列表)

我需要做的是将 ["features"]["geometry"]["paths"] 数组解析为由 x,y 对组成的行。这是我获取所有路径的方式(每个“记录”一个,如 features 数组):

这给了我我的路径,然后我可以从中依次处理每个点数组:

这就是我卡住的地方。我正在尝试从 JArray 和 LINQ-y 语句中进行各种强制转换,但由于无法访问 JProperty 子值,我不断得到空结果或异常。

希望有人已经处理过使用 LINQ 在 JSON.NET 中转换数组的数组,并且可以解释我必须犯的愚蠢错误,或者我没有看到的明显答案。

0 投票
2 回答
5676 浏览

c# - 使用 JSON.NET 反序列化一些 JSON

我对 JSON 很陌生,我需要解析一些 API 提供的内容。一个快速的谷歌搜索出现了JSON.NET,所以我现在尝试使用它来将此 JSON 解析为一个列表对象。首先,JSON.NET 是最好的库吗?

这就是我想要做的:例如,我有一个名为 Item 的类。json 有许多“元素”(如果它们被称为),每个包含 3 个字段:一个名为 id 的整数、一个名为 name 的字符串和一个名为 creationTime 的日期时间。我想将 json 中的所有这些 Item “元素”解析为 Item objects 列表。我在 Item 类中创建了 3 个字段来匹配 JSON。如何使用 JSON.NET 做到这一点?

我试过了:

但它似乎不起作用。我收到一个转换错误 - 它只是无法将它处理成一个列表附件,但我什至不确定它是否能够将 JSON 处理成一个 Item 类(JSON.NET 的文档不是很好,但我我明天将对其进行大量调试)。

你能给我一些示例代码来解释我如何用 JSON.NET 解析它吗?

谢谢!

更新:顺便提一下,我的项目将针对 .NET Framework 2.0,所以我使用的是 JSON.NET 的旧版本:1.3.1。是否有任何巨大的优势可以使项目值得转换为 .NET 3.5,同时削弱最低系统要求?

更新 #2:我决定在 System.Web.Extensions.dll 中使用 JavascriptSerializer 类而不是 JSON.NET,关于此的问题发布在这里。谢谢!

0 投票
3 回答
6384 浏览

c# - 序列化 LINQ to SQL 类时出现循环引用异常

我有一组 linq to sql 类,并使用 .NET JavaScriptSerializer 将它们序列化为 JSON。

但是,只要我将记录添加到相关表中,序列化就会引发“循环引用异常”。啊啊啊!

这里有详细描述。

我有几个选择

  • 将 linq to sql 类转换为没有关系的类,从而避免循环引用
  • 通过使关联归零来剪断循环引用 - 我不认为这是一个真正的选择
  • 使用 ScriptIgnoreAttribute(不知何故)。我不能轻易应用它,因为属性在生成的类中,并且 LINQ to SQL 不会自动尊重伙伴类
  • 使用 JSON.NET 并以某种方式使用属性 + 伙伴类来阻止序列化程序尝试遍历关系。

有人遇到过这种情况么?如果可能的话,我真的更喜欢最后一个选项,但我不知道该怎么做。

任何帮助是极大的赞赏

0 投票
2 回答
13416 浏览

c# - JsonConvert.DeserializeObject 的 JSON.net 问题

我有以下代码和json:

我希望这个数组 ["seq1","1"] 反序列化为 Label 对象。我错过了什么?一些属性?

当我运行时出现异常:预期类型为“test_JSONNET.Label”的 JsonArrayContract,得到了“Newtonsoft.Json.Serialization.JsonObjectContract”。

tnx

gg

0 投票
7 回答
10428 浏览

c# - WCF 中的 JsonConvert.DeserializeObject 和“d”包装器

默认情况下,WCF 服务将 JSON 响应包装在“d”包装器中,在那里我发现解析它的问题。

如果我用JsonConvert.DeserializeObject(response)解析,其中 response 是

我遇到了一个错误:

如果我将响应更改为

我让它工作了。

那么如何解析来自 WCF 服务的这个“d”包装的 JSON 响应呢?有没有更好的方法来解析 JSON?

0 投票
2 回答
15948 浏览

c# - 什么是 XML 的 XPath、SelectNodes、SelectSingleNode 的 JSON.NET 等价物?

目前,我的代码结构XmlDocument用于加载 Xml 数据,然后SelectNodes遍历重复项列表。

对于每个元素,我XmlNode.SelectSingleNode用来挑选字段元素。

我现在想使用 JSON.NET 来实现与作为 JSON 交付给我的文档相同的结果。答案可以是 JSON.net 以外的其他东西,只要它是 C# 可集成的。

0 投票
0 回答
758 浏览

.net - 使用 JSON.NET 库进行反序列化

我刚刚发现 James Newton-King 的库 JSON.NET 的行为有点奇怪。我正在使用它来反序列化客户端 JSON 自定义“功能”,并且一切正常 - 甚至是有效性测试。直到客户端发送另一种类型的“功能”:

如果提供的字符串有效,则返回正确的 jsonFeature,当字符串包含格式错误的 JSON 时正确抛出异常,但如果字符串包含其他类型的有效序列化特征,则错误地返回某个对象。我认为指定类型时,Deserialize() 方法应该在类型不同时抛出异常,但显然不是。

使用(或不使用)自定义 JSONConverter 没有任何效果,它只是用于一些特殊的 JSON 属性处理。

挖掘文档并没有太大帮助。我正在使用 3.5 版本(也在 .NET 框架 3.5 中)。我错过了什么?提前致谢...

0 投票
1 回答
1633 浏览

.net - 哪些 .NET JSON 序列化程序可以处理 NHibernate 代理对象?

哪些 .NET JSON 序列化程序可以处理 NHibernate 代理对象?我尝试使用 JSON.NET,但是当它遇到代理对象时它会崩溃。