如何在MonoTouch中使用System.Json进行序列化

我的另一个问题似乎过于笼统,所以我想我会在细节上创建一个新问题。 抱歉,如果这被认为是不好的做法。

我正在尝试使用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("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有一个更简单的方法吗?

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

您可以使用像Newtonsoft这样的第三方Json库,或者等待具有DataContractJsonSerializer的MonoTouch v4