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

141
24 декабря 2018, 00:30
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/ (также в студии можно использовать специальную вставку Paste Special. Для этого надо предвариетльно json скопировать в буфер обмена.)

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
Создать свой Task.Run

Создать свой Task.Run

Каким образом в c# можно сделать async получив значение во внешний метод из лямбды?

144
C# WPF Binding метода

C# WPF Binding метода

Есть метод

148
azure face api c#

azure face api c#

Как максимально просто, реализовать сравнение двух лиц на сходство используя сервис azure face

204