2011-02-17 68 views
2

我的other question似乎过于通用,所以我想我会在细节上创建一个新的。对不起,如果这是不好的做法。如何在MonoTouch中使用System.Json进行序列化

我想以一种不需要我自己下降通过对象的方式将C#对象序列化为带有MonoTouch和System.Json命名空间的JSON字符串。那可能吗?如果是,如何正确执行?

通过隐式地将JsonValue转换为字符串int,无论什么情况下,反序列化都能很好地工作。另外,在层次结构中下降不成问题。像这样:

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

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

只有元素类型(字符串/整数/ ...)才可以相反。其他对象不能转换为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有更简单的方法吗?

+0

更好的做法会一直修改原来的问题包括以下信息:) – Luke 2011-02-17 10:08:29

+0

大声笑不被所以粗鲁@Luke;)但我同意你:)反正我希望有人可以帮助他/她的问题JSON它不是我的事情:p – dalexsoto 2011-02-17 16:58:15

回答

2

System.Json不支持像这样的任意序列化。

您可以使用第三方JSON库像Newtonsoft,或等待MonoTouch的V4这将对DataContractJsonSerializer

相关问题