Мой другой вопрос кажется слишком общим, поэтому я решил, что создам новый по деталям.Извините, если это считается плохой практикой.
Я пытаюсь сериализовать объекты 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?