Разбор JSON в C# с очень большим массивом JSON - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь разобрать большой массив 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"
  }
}]

есть ли способ динамически превратить это в объект c#, как вы можете в javascript используя JSON .parse?

1 Ответ

1 голос
/ 06 мая 2020

Вы говорите, что у вас большая json. Я предполагаю, что вы так говорите, потому что json имеет много свойств, которые вам не нужны. Если вам делать нужны все свойства, я бы просто определил класс, содержащий все свойства.

Тем не менее. Я думаю, у вас есть два реальных варианта, если бы мы выбрали go для Newtonsoft. Json.

1. Определите класс только с теми свойствами, которые вам нужны

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

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

2. Десериализовать в JArray и рассматривать его как динамический c объект.

var jArray = JArray.Parse(myJsonString);
var firstStoreId = jArray[0]["storeId"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...