Как распарсить объект такого вида на c#?

265
29 октября 2017, 17:03
var tree = {
   left: {
       left: "Первое предложение из произвольной строки",
       right: {
           left: "Другое произвольное предложение",
           right: "Еще одно следующее предложение, но не очень длинное"
       }
   },
   right: {
       left: {
           left: {
               left: "Еще одно не очень длинное предложение",
               right: ""
           }, 
           right: {
               left: "",
               right: "Еще одно не очень длинное предложение"
           }
       },
       right: {
           left: {
               left: "Предложение",
               right: "Еще одно следующее предложение, но не очень длинное"
           },
           right: {
               left: "Другое произвольное предложение",
               right: {
                   left: "Два слова",
                   right: "Еще одно следующее предложение, но не очень длинное"
               }
           }
       }
   }
}
Answer 1

Берем ваш JSON

string json = @"{
   left: {
       left: ""Первое предложение из произвольной строки"",
       right: {
           left: ""Другое произвольное предложение"",
           right: ""Еще одно следующее предложение, но не очень длинное""
       }
   },
   right: {
       left: {
           left: {
               left: ""Еще одно не очень длинное предложение"",
               right: """"
           }, 
           right: {
               left: """",
               right: ""Еще одно не очень длинное предложение""
           }
       },
       right: {
           left: {
               left: ""Предложение"",
               right: ""Еще одно следующее предложение, но не очень длинное""
           },
           right: {
               left: ""Другое произвольное предложение"",
               right: {
                   left: ""Два слова"",
                   right: ""Еще одно следующее предложение, но не очень длинное""
               }
           }
       }
   }
}";

Генерируем классы для него тут http://json2csharp.com/

public class Right
{
    public string left { get; set; }
    public string right { get; set; }
}
public class Left
{
    public string left { get; set; }
    public Right right { get; set; }
}
public class Left3
{
    public string left { get; set; }
    public string right { get; set; }
}
public class Right3
{
    public string left { get; set; }
    public string right { get; set; }
}
public class Left2
{
    public Left3 left { get; set; }
    public Right3 right { get; set; }
}
public class Left4
{
    public string left { get; set; }
    public string right { get; set; }
}
public class Right6
{
    public string left { get; set; }
    public string right { get; set; }
}
public class Right5
{
    public string left { get; set; }
    public Right6 right { get; set; }
}
public class Right4
{
    public Left4 left { get; set; }
    public Right5 right { get; set; }
}
public class Right2
{
    public Left2 left { get; set; }
    public Right4 right { get; set; }
}
public class RootObject
{
    public Left left { get; set; }
    public Right2 right { get; set; }
}

Для десериализации я использую библитеку https://www.newtonsoft.com/json - её можно скачать через nuget (https://www.nuget.org/packages/Newtonsoft.Json/). После подключения библиотеки, десериализуем JSON в объект

var myObject = JsonConvert.DeserializeObject<RootObject>(json);

Готово.

READ ALSO
Работа с ComboBox в потоке

Работа с ComboBox в потоке

Здравствуйте! При попытке установить ValueMember для ComboBox в потоке получаю следующую ошибку:

219
EntityFarmeworkCore абстрактный слой доступа к данным

EntityFarmeworkCore абстрактный слой доступа к данным

Здравсвуйте, хотелось создать абстрактный слой доступа к данным используя проекты типа NetStandart 20

293
Не работает JQuery в проекте ASP.NET

Не работает JQuery в проекте ASP.NET

Есть Html-хелпер, который генерирует элемент input

255
Узнать о построении DOM | Selenium | C#

Узнать о построении DOM | Selenium | C#

Как узнать о построении DOM в Selenium ?

184