【发布时间】:2018-02-23 21:03:33
【问题描述】:
我正在尝试反序列化一个 JSON 文件,其中元素采用以下格式:
{"include\\fooo\\Gell.h": {
"parents": [
"include\\rfg\\ExplorableMa.h"
],
"children": [
"include\\rfg\\IEditable.h",
"include\\rfg\\IExplorable.h",
"Bar"
]
}}
JSON 文件中可能有 1 个或多个元素相互跟随。我尝试使用 System.Runtime.Serialization.Json 命名空间,但这段代码并没有取得多大成功:
[DataContract]
class Vertex
{
[DataMember] public string Path { get; set; }
}
using (Stream stream = File.OpenRead(@"file.json"))
{
var serializer = new DataContractJsonSerializer(typeof(Vertex[]));
Vertex[] verteces = (Vertex[])serializer.ReadObject(stream);
// the array is not valid at this point
}
在这种特定情况下,上面的代码应该用单个顶点填充数组,其路径等于"include\\fooo\\Gell.h"。
反序列化此类 JSON 文件的正确方法是什么?
【问题讨论】:
-
你听说过
Json.net吗? -
@dbc 我编辑了json,现在它是有效的。
-
@FrankerZ 不,我没有。我宁愿不使用 3rd 方库。为什么在 .Net 中解析 JSON 就这么难?这样的标准格式。
-
为什么不使用支持良好的第 3 方库?你为什么要反序列化为顶点数组?为什么要反序列化的对象与 JSON 结构不匹配?我在您的 JSON 中看不到 Path 属性。
-
使用 Newtonsoft.Json。它是一个 3d 派对,但它是一个 Asp.Net mvc 核心依赖项。值得被认为是可靠的。