Путаница в классе для десериализации объекта JSON в - PullRequest
0 голосов
/ 18 октября 2019

Я использую json2csharp.com и вставил в него мои необработанные данные Json, чтобы создать класс для десериализации объекта, но он сгенерировал много классов ( RootObject и другие , называемые " __ invalid_type __" ) и теперь это сбивает меня с толку ... так как у меня много " __ invalid_type __ ".

Мой вопрос сейчас: мне также нужно использовать класс __ invalid_type __ вмой исходный код C #?

Ниже приведен raw-json

{"Id":31,
"Title":"Japan Toyoda",
"SubTitle":"Japenese, WR14 3HE",
"Description":"\u003Cp\u003 is a town of about 300,000 people located in South on the A449 80 miles south west of the city of Naga. properties.\u003C\/p\u003E",
"InvestStrategy":"\u003Cp\u003Hokido Construction Ltd is offering \u00a3597,826 debt investment via the Bond promoted by with Us for the refinance of , expiry of the Bond Term.\u003C\/p\u003E",
"InvestType":"NorthBounds",
"TargetReturn":"50.0000",
"InvestTerm":12,"MinimalPrice":"1.00","SharePrice":1,
"TotalShares":597826,
"AvailableShares":186670,
"BoughtShares":411156,
"InformationMemorandumUrl":"https:\/\/www.google.jp\/properties\/propertyInformationFile\/hokidoRoad",
"MainImage":"https:\/\/www.mysite.com\/properties_images\/image0001.png",
"Images":["https:\/\/www.mysite.com\/properties_images\/image078901.png","https:\/\/www.mysite.com\/properties_images\/6a5940077eec9cc283.JPG","https:\/\/www.mysite.com\/properties_images\/4f9036fa91ede.jpeg"],
"Plan":["https:\/\/www.mysite.com\/properties_images\/4f9036694fa91ede.jpeg"],
"ListAttributes":{"1":{"name":"Second Charge Security","icon":"checking-square","value":""},"2":{"name":"","icon":"checking-square-o","value":""},"3":{"name":"Second Board","icon":"checking-square-o","value":""},"4":{"name":"Water","icon":"fa-check-square-o","value":""}},
"Latitude":"130.10599000","Longitude":"-78.210610000","Url":"https:\/\/www.mysite.com\/ref\/bb88f8054731878b209c\/youtoo"}

Ниже сгенерирован класс от json2csharp.com

public class __invalid_type__1
{
    public string name { get; set; }
    public string icon { get; set; }
    public string value { get; set; }
}

public class __invalid_type__2
{
    public string name { get; set; }
    public string icon { get; set; }
    public string value { get; set; }
}

public class __invalid_type__3
{
    public string name { get; set; }
    public string icon { get; set; }
    public string value { get; set; }
}

public class __invalid_type__4
{
    public string name { get; set; }
    public string icon { get; set; }
    public string value { get; set; }
}

public class ListAttributes
{
    public __invalid_type__1 __invalid_name__1 { get; set; }
    public __invalid_type__2 __invalid_name__2 { get; set; }
    public __invalid_type__3 __invalid_name__3 { get; set; }
    public __invalid_type__4 __invalid_name__4 { get; set; }
}

public class RootObject
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string SubTitle { get; set; }
    public string Description { get; set; }
    public string InvestStrategy { get; set; }
    public string InvestType { get; set; }
    public string TargetReturn { get; set; }
    public int InvestTerm { get; set; }
    public string MinimalInvest { get; set; }
    public int SharePrice { get; set; }
    public int TotalShares { get; set; }
    public int AvailableShares { get; set; }
    public int BoughtShares { get; set; }
    public string InformationMemorandumUrl { get; set; }
    public string MainImage { get; set; }
    public List<string> Images { get; set; }
    public List<string> FloorPlan { get; set; }
    public ListAttributes ListAttributes { get; set; }
    public string Latitude { get; set; }
    public string Longitude { get; set; }
    public string Url { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Вероятно, лучше использовать QuickType (https://app.quicktype.io/#l=cs), потому что он будет генерировать Dictionary свойств. Dictionary необходим, потому что исходный JSON имеет числовые ключи, такие как "1", которые не могут быть переведены вИмена свойств класса C #.

Я очистил JSON до этого, потому что инструмент продолжал жаловаться на обратную косую черту:

{"Id":31,
"Title":"....",
"SubTitle":"....",
"Description":"....",
"InvestStrategy":"....",
"InvestType":"....",
"TargetReturn":"50.0000",
"InvestTerm":12,
"MinimalPrice":"1.00",
"SharePrice":1,
"TotalShares":597826,
"AvailableShares":186670,
"BoughtShares":411156,
"InformationMemorandumUrl":"....",
"MainImage":"....",
"Images":["....","....","...."],
"Plan":["...."],
"ListAttributes":{"1":{"name":"....","icon":"....","value":""},"2":{"name":"","icon":"....","value":""},"3":{"name":"....","icon":"....","value":""},"4":{"name":"Water","icon":"....","value":""}},
"Latitude":"130.10599000",
"Longitude":"-78.210610000",
"Url":"...."}

Частичный вывод (*):

public partial class JsonItem
{
    public long Id { get; set; }

    // Other props...

    public string[] Images { get; set; }
    public string[] Plan { get; set; }
    public Dictionary<string, ListAttribute> ListAttributes { get; set; }
    public string Latitude { get; set; }
    public string Longitude { get; set; }
    public string Url { get; set; }
}

public partial class ListAttribute
{
    public string Name { get; set; }
    public string Icon { get; set; }
    public string Value { get; set; }
}

(*): Генерируется с помощью опции [Just Types]. Вы можете получить более полный код, используя один из других вариантов вывода.

0 голосов
/ 18 октября 2019

правильная структура класса для вашей структуры JSON также может быть представлена ​​как

public class Listattributes
{
    public dataObject _1 { get; set; }
    public dataObject _2 { get; set; }
    public dataObject _3 { get; set; }
    public dataObject _4 { get; set; }
}

public class dataObject
{
    public string name { get; set; }
    public string icon { get; set; }
    public string value { get; set; }
}

rootObject остается прежним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...