Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MonoTouch中使用System.Json进行序列化_C#_Json_Serialization_Xamarin.ios - Fatal编程技术网

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

C# 如何在MonoTouch中使用System.Json进行序列化,c#,json,serialization,xamarin.ios,C#,Json,Serialization,Xamarin.ios,我的建议似乎太笼统了,所以我想我应该在细节上创建一个新的建议。对不起,如果这被认为是不好的做法 我试图用MonoTouch和System.JSON名称空间将C#对象序列化为JSON字符串,这种方式不需要我亲自遍历对象。可能吗?如果是,如何正确执行 反序列化通过隐式地将JsonValue转换为字符串int或其他形式工作得很好。此外,在层次结构中下降也没有问题。像这样: JsonValue json = JsonValue.Parse(jsonString); int mainValue = jso

我的建议似乎太笼统了,所以我想我应该在细节上创建一个新的建议。对不起,如果这被认为是不好的做法

我试图用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;
//这很管用
JsonValue json=新的JsonObject(新的KeyValuePair(“mainValue”,12345));
//无法(隐式)将类型“MyObjectType”转换为“System.Json.JsonValue”
MyObjectType myObject=新的MyObjectType();
JsonValue子值=myObject;
//无法(隐式)将类型“myImplestruct”转换为“System.Json.JsonObject”
我的建议破坏了我的结构;
myStruct.x=1;
myStruct.y=2;
JsonValue-myStructJson=myStruct;

由于我的对象中嵌套了多个级别的其他对象,因此我自己遍历它并分配所有值将是一个很好的PITA。System.Json有更简单的方法吗?

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


您可以使用第三方Json库,如Newtonsoft,或者等待MonoTouch v4,它将具有DataContractJsonSerializer

更好的做法是编辑原始问题以包含以下信息:)Lol别这么粗鲁@Luke;)但我同意你的看法:)无论如何,我希望有人能帮助他/她解决这个问题,这不是我的事:嗯。。。DataContractJsonSerializer无法序列化任意类型,它要求您将所有类修饰为DataContracts。。。