Парсинг динамического json на C#

303
09 декабря 2016, 08:47

Здравствуйте, есть json объект типа:

{
  "status": 1,
  "data": {
    "http://www.artlebedev.ru": {
      "lda":
      "100,0,0:7,2:16,3:9,4:68,7:38,10:15,11:26,12:11,13:6,14:14,15:229,18:25,22:15,23:95,25:38,27:32,28:64,29:4,30:42,34:17,37:22,39:77,41:75,42:173,45:52,50:36,51:62,52:11,54:8,55:7,56:1,57:13,63:104,64:77,66:34,67:47,68:37,70:58,71:9,72:29,74:146,75:20,76:255,77:10,84:67,85:21,86:18,88:14,91:198,92:33,95:30,96:37",
  "topics": [
    {
      "t": "/Culture/Movies",
      "n": "Культура/Кино",
      "w": 0.724247
    },
    {
      "t": "/Business/General",
      "n": "Бизнес/Универсальное",
      "w": 0.670288
    },
    {
      "t": "/Media/TV",
      "n": "СМИ/Телевидение",
      "w": 0.645545
    }
  ]
}
  },
  "request_time": 5.378
  }

Параметр http://www.artlebedev.ru является динамическим, и зависит от передаваемого url серверу. Каким образом парсить такой динамический документ, если в newtonsoft json необходимо полностью указывать статичную структуру документа?

Answer 1

Там не обязательно в определенный класс парсить (если я правильно понял проблему).
Как вариант можно заготовить набор структур (классов), дальше запросить этот динамический параметр http://www.newtonsoft.com/json/help/html/QueryJsonSelectToken.htm и решить в какую структуру парсить.

Или какие-то варианты с dynamic
http://www.newtonsoft.com/json/help/html/QueryJsonDynamic.htm
c LINQ
http://www.newtonsoft.com/json/help/html/QueryJsonLinq.htm

READ ALSO
Наследование в EntityFramework

Наследование в EntityFramework

Допустим, были сгенерированы Классы-сущности и мне захотелось расширить какую-то сущность дополнительными полями(Например, вспомогательными...

265
Не работает скролл в ListView

Не работает скролл в ListView

В моем ListView с кнопками по непонятной мне причине, не хочет работать скролл Вот Listview

276
Как правильно представить if-else- блок в Unit Test?

Как правильно представить if-else- блок в Unit Test?

ЗдравствуйтеЯ хочу с помощью Unit Test проверить, или моя функция правильно работает и не знаю как заменить блок if-else?

241
TwoWay Binding не работает через DependencyProperty

TwoWay Binding не работает через DependencyProperty

При изменении свойства через TwoWay binding не производится работа с переменной, только со свойством зависимости

244