【问题标题】:How to read an array of long values inside a json object value in JSON.NET如何在 JSON.NET 中读取 json 对象值内的长值数组
【发布时间】:2019-05-23 14:12:13
【问题描述】:

我有一个像下面这样的 json。

"bookshelf": {
               "shelfId": 5752814017970176,
               "shelfName": "Novels",
               "description": null,
               "bookOrder": "[5720369633689600, 5631072867975168, 5765651641663488, 5685154290860032, 4675571090980864, 4721509306204160]",
               "createrType": "TEACHER",
           }

我需要将值 bookOrder 读取为长值数组。如何在 C# 中使用 Json.net 来做到这一点?

【问题讨论】:

    标签: c# asp.net arrays json json.net


    【解决方案1】:

    您的 Json 字符串会生成这样的类:

    public class RootObject
        {
            public Bookshelf bookshelf { get; set; }
        }
    public class Bookshelf
    {
        public long shelfId { get; set; }
        public string shelfName { get; set; }
        public object description { get; set; }
        public long[] bookOrder { get; set; }
        public string createrType { get; set; }
    }
    

    然后你可以像这样得到bookOrder

    RootObject library=JsonConvert.DeserializeObject<RootObject>(jsonString);
    long[] bookOrders=library.bookshelf.bookOrder;
    

    测试:

    foreach(var num in bookOrders)
    {
      Console.WriteLine(num);
     }
    

    【讨论】:

      【解决方案2】:

      您可以Querying Json 使用类似索引器来获取长值数组

      string json = File.ReadAllText(@"Path to your json file");
      
      JToken jToken = JToken.Parse(json);
      
      var longArray = jToken["bookshelf"]["bookOrder"].ToObject<long[]>();
      

      然后你可以像这样打印长数组

      foreach (long item in longArray)
          Console.WriteLine(item);
      

      输出:

      【讨论】:

        【解决方案3】:

        首先,您的书单应该是一个合适的数组。你有一个字符串。

        "bookshelf": {
            "shelfId": 5752814017970176,
            "shelfName": "Novels",
            "description": null,
            "bookOrder": [5720369633689600, 5631072867975168, 5765651641663488, 5685154290860032, 4675571090980864, 4721509306204160],
            "createrType": "TEACHER",
        }
        

        一旦你解决了这个问题,你就可以将该 prop 转换为一个 long 数组。

        var j = JsonConvert.DeserializeObject<JToken>(json);
        Console.WriteLine(j["bookshelf"]["bookOrder"].ToObject<long[]>()[0]);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多