【问题标题】:Parsing JSON in C# with very large JSON array在 C# 中使用非常大的 JSON 数组解析 JSON
【发布时间】:2020-05-06 20:16:32
【问题描述】:

我正在尝试将一个大的 JSON 数组解析为一个 c# 对象。现在我知道了将具有匹配键的类与 JSON 对象匹配然后将 JSON 对象的每个值分配给 c# 类中的匹配键的常规方法。但这对于我的目的来说效率非常低,因为我在这里处理非常大的 JSON 对象是一个例子:

    [{
  "storeId": "331",
  "storeName": "Bergen, Lagunen",
  "status": "Open",
  "address": {
    "street": "Laguneveien 1",
    "postalCode": "5239",
    "city": "Rådal",
    "gpsCoord": "60.297116;5.331159",
    "globalLocationNumber": "7080003251008",
    "organisationNumber": "888039902"
  },
  "telephone": "22 01 50 00",
  "email": "kundesenter@vinmonopolet.no",
  "category": "6",
  "openingHours": {
    "regularHours": [{
      "dayOfTheWeek": "Monday",
      "openingTime": "10:00",
      "closingTime": "18:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Tuesday",
      "openingTime": "10:00",
      "closingTime": "18:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Wednesday",
      "openingTime": "10:00",
      "closingTime": "18:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Thursday",
      "openingTime": "10:00",
      "closingTime": "18:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Friday",
      "openingTime": "10:00",
      "closingTime": "18:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Saturday",
      "openingTime": "10:00",
      "closingTime": "15:00",
      "closed": false
    }, {
      "dayOfTheWeek": "Sunday",
      "openingTime": "",
      "closingTime": "",
      "closed": true
    }],
    "exceptionHours": [{
      "date": "2020-05-21",
      "openingTime": "",
      "closingTime": "",
      "message": "Stengt Kristi himmelfartsdag"
    }]
  },
  "lastChanged": {
    "date": "2020-05-04",
    "time": "00:02:04"
  }
}]

有什么方法可以像在 javascript 中使用 JSON.parse 那样动态地将其转换为 c# 对象?

【问题讨论】:

  • 查看 Newtonsoft.Json,尤其是 JArray.Parse 方法。
  • 我不明白为什么你不应该创建一个匹配你的对象的类。它对我来说似乎不是特别大

标签: c# json unity3d


【解决方案1】:

你说你有很大的 json。我会假设你这么说是因为 json 有很多你不需要的属性。如果您确实需要所有属性,我会定义一个包含所有属性的类。

就是这么说的。如果我们选择 Newtonsoft.Json,我认为你有两个真正的选择。

1。定义一个只包含您需要的属性的类

public class Pruned
{
    public string StoreId { get; set; }
}

var prunedList = JsonConvert.DeserializeObject<List<Pruned>>(myJsonString);

2。反序列化为 JArray 并将其视为动态对象。

var jArray = JArray.Parse(myJsonString);
var firstStoreId = jArray[0]["storeId"];

【讨论】:

  • 非常感谢,使用 JArray 修复了它
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多