【问题标题】:Deserialize JSON value without name反序列化没有名称的 JSON 值
【发布时间】:2017-09-07 19:34:08
【问题描述】:

如何反序列化 C# 中只有值而没有名称的字符串。它看起来像这样:问题是这个字符串流没有名称并且使用数组。

{
  "result": {
    "14400": [
      [
        1502985600,
        262.18,
        262.18,
        257,
        257,
        1096.0131
      ],
      [
        1503000000,
        257,
        261.33,
        254.8,
        257,
        1130.5897
      ]
   ],
 "14405": [
      [
        1503014400,
        258.03,
        261.5,
        257.01,
        257.01,
        520.7805
      ],
      [
        1503028800,
        258,
        260.98,
        252.4,
        259.56,
        298.5658
      ],
   ]
  ]
 }
}

【问题讨论】:

  • 一定是骗子吧?

标签: c# json deserialization


【解决方案1】:

只需创建一个类

public class Root
{
    public Dictionary<int,List<List<double>>> Result { get; set; }
}

反序列化为

var res = JsonConvert.DeserializeObject<Root>(json);

【讨论】:

  • @napi15 你为什么不试试呢?
  • 我只是一个中间人,当我花了 10 分钟尝试构建我的 2 线解决方案时,我感到很惊讶和印象深刻 :)
  • @napi15 它也可以是单行的,但可读性不强。 var dict = JObject.Parse(json)["result"].ToObject&lt;Dictionary&lt;int, List&lt;List&lt;double&gt;&gt;&gt;&gt;();
【解决方案2】:

我看到它是一个数组,你可以创建一个方法来解析给定的 JArray 中的类。

杰森资料

  public void methpod()
    {

string json ="Your jason value " 

        var factory = new Factory();
        var suggest = factory.Create(json);

        Console.WriteLine(suggest);
    }

按照建议开设课程:

public class Factory
{
    public Evan Create(string json)
    {
        var array = JArray.Parse(json);
        string search = array[0].ToString();
        string[] terms = array[1].ToArray().Select(item => item.ToString()).ToArray();

        return new Evan{Search = search, Terms = terms};
    }
}

还有一个

public class Evan
{
    public string Search { get; set; }
    public IEnumerable<string> Terms { get; set; }
    public override string ToString()
    {
        return string.Format("Search={0},Terms=[{1}]", 
            Search, string.Join(",", Terms));
    }
}

【讨论】:

    【解决方案3】:

    提示

    如果您有想要反序列化的 JSON,而您没有将其反序列化的类,Visual Studio 2019 可以自动生成您需要的类:

    复制需要反序列化的 JSON。 创建一个类文件并删除模板代码。 选择编辑 > 选择性粘贴 > 将 JSON 粘贴为类。 结果是一个可用于反序列化目标的类

    【讨论】:

    • 虽然这在正常情况下很有用,但在结果以数字作为属性名称的情况下就没有用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2017-03-18
    • 2021-04-13
    相关资源
    最近更新 更多