如何在JSON.NET中读取json对象值中的long值数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JSON.NET中读取json对象值中的long值数组相关的知识,希望对你有一定的参考价值。

我有一个喜欢跟随的json。

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

我需要读取值bookOrder作为长值数组。如何在c#中使用Json.net?

答案

你的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);
 }
另一答案

您可以通过使用索引器来获取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);

输出:

enter image description here

另一答案

首先,您的图书订单列表应该是正确的数组。你有一个字符串。

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

修复后,您可以将该支柱转换为多个数组。

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

以上是关于如何在JSON.NET中读取json对象值中的long值数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 Json.Net 处理数据中的换行符

如何将弱类型 JSON 转换为 C# 可读对象

如何解析JSON.NET中的匿名数组?

如何使用 JSON.net 解析 JSON 文件

在反序列化时如何忽略JSON对象数组中的空白数组?

asp.netmvc读取保存json