【问题标题】:JSON.net deserialize JSON without schemaJSON.net 反序列化没有模式的 JSON
【发布时间】:2017-01-10 07:50:00
【问题描述】:

我有一些 JSON:

{
    "739c39e": [7866679, 31.96051, 117.13700, 310, 30100, 408, 20515, 2955, "A319", "B-6429", 1440504861, "SHA", "XIY", "MU2168", 0, 0, "CES2168", 0],   
    "739d433": [5242971, 51.46741, -0.48536, 270, 0, 16, 0, 2529, "A320", "T7-MRD", 1440504861, "LHR", "BEY", "ME202", 1, 0, "MEA202", 0]
}

我正在尝试反序列化它,但运气不佳。

我试过了:

 var definition = new { a = "", b = "", c = "", d = "", e = "", f = "", g = "", h = "", i = "", j = "", k = "", l = "", m = "", n = "", o = "", p = "", q = "", r = "" };
 var jsonData = @File.ReadAllText(@filepathToData);
 dynamic deserializedData = JsonConvert.DeserializeAnonymousType(jsonData, definition);

我从没想过它会起作用,真的,因为 JSON 中没有“定义”。 我也试过JArray.Parse(jsonData);的方式,但我什么也没得到。

我也尝试过JsonConvert.DeserializeObject(jsonData);,但它没有返回任何东西......或者至少我无法使用 Visual Studio (2015) 检查返回的对象。

有人有什么想法吗?

我正在 Unity3D 中执行此操作,如果它有什么不同的话。

【问题讨论】:

  • 您的数据是一个字典,但您的定义是一个数组。所以把它改成这样: var definition = new Dictionary( string key, new{a = "", b......}

标签: c# json unity3d


【解决方案1】:

你可以试试这个

var o = JsonConvert.DeserializeObject<Dictionary<string, object[]>>(json);
o.Dump();

【讨论】:

  • 不错,谢谢! @Edgaras 是在正确的轨道上!
【解决方案2】:

您可以像这样将其反序列化为动态对象:

dynamic o = JsonConvert.DeserializeObject(json);
Console.WriteLine(o["739c39e"]);
Console.WriteLine(o["739c39e"][3]); // output: 310

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多