2013-02-17 1 views
1

Я использовал json2csharp для создания некоторого приятного класса C#, в который я могу десериализовать json.Как переименовать и переназначить поля с незаконными именами json field

Это фактически работает как ожидалось. ИСКЛЮЧАЕТ, что json2csharp назвал некоторые из полей invalid_name. Я переименовал их в действительные имена csharp, но когда сериализованные эти классы имеют значение null.

Я нашел this other SO post ... где один из указанных отвечающих следующий ...

Имейте в виде класс я наклеен ниже не будет работать напрямую, из наименования некоторых из поля в json. У вас может быть , чтобы переименовать их вручную и сопоставить их.

Это точно описывает мою проблему. К сожалению, ответ не дает никаких указаний о том, КАК «отображать» их. Так может кто-то сказать мне, как вручную сопоставить некоторые json-массивы с классами C#.

Я использую десериализаторы RestSharp, кстати.

Любые идеи?

ответ

6

Если вы используете JSON.NET в качестве основы или разбора JSON, вы можете переименовать свои свойства и затем украсить их атрибутами, чтобы выровнять их обратно к исходному объекту JSON.

Примером является свойство в JSON, называемое 1, которое недействительно на C#. Это можно исправить, используя следующие:

[JsonProperty("1")] 
public int? One { get; set; } 

Существует также атрибут JSONObject, если вы хотите редактировать на уровне класса, а также объект JsonIgnore игнорировать сериализации свойств.