我正在尝试使用JSon.Net库解析一些JSON。文档看起来有点稀疏,我对如何完成我需要的东西感到困惑。下面是我需要解析的JSON的格式。
{
"displayFieldName" : "OBJECT_NAME",
"fieldAliases" : {
"OBJECT_NAME" : "OBJECT_NAME",
"OBJECT_TYPE" : "OBJECT_TYPE"
},
"positionType" : "point",
"reference" : {
"id" : 1111
},
"objects" : [ {
"attributes" : {
"OBJECT_NAME" : "test name",
"OBJECT_TYPE" : "test type"
},
"position" : {
"x" : 5,
"y" : 7
}
} ]
}
我真正需要的唯一数据是objects数组中的内容。我是否可以使用JSonTextReader之类的工具解析该数组,然后提取出我想要的内容,如OBJECT_TYPE以及x和y位置?我似乎无法让JSonTextReader
按照我希望的方式工作,而且我几乎找不到使用它的示例。
看起来首先序列化然后使用LINQ处理我的对象是理想的,我找到的每个例子都讨论了首先序列化JSON,但是我不确定我将如何为这个结构构建一个对象。特别是对象数组,它需要像一个属性和位置对象对的列表。我不知道我将如何编码我的对象,这样JSon.Net就知道如何序列化它。
我以为我可以编写自己的简单解析器,将所需的一切提取到我创建的属性对象中,但我运气不佳。
希望这一切都说得通,有什么想法吗?
5条答案
按热度按时间kmbjn2e31#
我不知道JSON.NET,但它可以很好地与
System.Web.Extensions.dll
(.NET 3.5 SP1)中的JavaScriptSerializer
配合使用:编辑:
Json.NET使用相同的JSON和类工作。
链接:Serializing and Deserializing JSON with Json.NET
o75abkj42#
**编辑:**谢谢Marc,仔细阅读结构体与类的问题,你是对的,谢谢!
我倾向于使用JSon.Net的静态方法,使用下面的方法来完成您所描述的工作:
链接:Serializing and Deserializing JSON with Json.NET
对于对象列表,我建议您使用由您自己的包含
attributes
和position
类的小类组成的泛型列表。您可以在System.Drawing
中使用Point
结构(System.Drawing.Point
或System.Drawing.PointF
用于浮点数)来表示X和Y。在创建对象之后,获得所需的数据要容易得多,而不是像其他方法那样进行文本解析。
shstlldc3#
(This一个问题在搜索引擎结果中排名很高,但我最终使用了不同的方法。为这个老问题添加一个答案,以防其他有类似问题的人读到这个)
您可以使用Json.net解决这个问题,并创建一个扩展方法来处理您想要循环的项:
然后像这样访问数据:(方案:写入控制台):
k2fxgqgv4#
31moq8wy5#
使用
JSON
类,然后调用GetData()
函数。