【发布时间】:2011-02-18 01:18:03
【问题描述】:
我的other question 似乎太笼统了,所以我坚持我会在细节上创建一个新的。抱歉,如果这被认为是不好的做法。
我正在尝试使用 MonoTouch 和 System.Json 命名空间将 C# 对象序列化为 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 有没有更简单的方法?
【问题讨论】:
-
更好的做法是编辑原始问题以包含此信息:)
-
大声笑不要那么粗鲁@Luke ;) 但我同意你的看法 :) 无论如何我希望有人可以帮助他/她解决 JSON 问题,这不是我的事:p
标签: c# json serialization xamarin.ios