Как сериализовать с помощью System.Json в MonoTouch - PullRequest
2 голосов
/ 17 февраля 2011

Мой другой вопрос кажется слишком общим, поэтому я решил, что создам новый по деталям.Извините, если это считается плохой практикой.

Я пытаюсь сериализовать объекты C # в строки JSON с MonoTouch и пространством имен System.Json таким образом, чтобы мне не пришлось самостоятельно проходить через объект (ы),Это возможно?Если да, как это сделать правильно?

Десериализация работает хорошо, неявно приводя JsonValue к строке int, что угодно.Кроме того, спуск по иерархии не является проблемой.Вот так:

JsonValue json = JsonValue.Parse(jsonString);
int mainValue = json["mainValue"];

JsonValue subValues = json["subValues"];
int subValue1 = subValues["subValue1"];

Противоположное возможно только для элементарных типов (string / int / ...).Другие объекты не могут быть преобразованы в JsonValue / JsonObject, к сожалению.Даже не очень простые структуры с двумя целыми числами.

// This works
JsonValue json = new JsonObject(new KeyValuePair<string,JsonValue>("mainValue", 12345));

// Cannot (implicitly) convert type 'MyObjectType' to 'System.Json.JsonValue'
MyObjectType myObject = new MyObjectType();
JsonValue subValues = myObject;

// Cannot (implicitly) convert type 'MySimpleStruct' to 'System.Json.JsonObject'
MySimpleStruct myStruct;
myStruct.x = 1;
myStruct.y = 2;
JsonValue myStructJson = myStruct;

Поскольку у моего объекта есть несколько уровней других объектов, вложенных в него, проход по нему самому и присвоение всех значений будет отличной PITA.Есть ли более простой способ с System.Json?

1 Ответ

2 голосов
/ 17 февраля 2011

System.Json не поддерживает произвольную сериализацию, подобную этой.

Вы можете использовать стороннюю библиотеку Json, например, Newtonsoft, или подождать MonoTouch v4 с DataContractJsonSerializer

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