NSDictionary 到 Xamarin.iOS 中的 Json
Posted
技术标签:
【中文标题】NSDictionary 到 Xamarin.iOS 中的 Json【英文标题】:NSDictionary to Json in Xamarin.iOS 【发布时间】:2019-02-15 12:24:53 【问题描述】:我正在尝试使用NSJsonSerialization.Serialize
将NSDictionary
转换为Json
。但我没有得到预期的输出
Xamarin.iOS 中的代码
var dictionary = new NSDictionary(
new NSString("userName"), new NSString("450012"),
new NSString("password"), new NSString("Abc134"),
new NSString("companyId"), new NSString("CM1")
);
request.Body = NSJsonSerialization.Serialize(dictionary, 0, out error);
问题是 dictionary
变量的值正在显示
password":Abc134,companyId:CM1,userName:450012
而不是
密码:Abc134,companyId:CM1,用户名:450012
前后各加一个花括号
有没有办法为用户输入值生成正确的 json 字符串
【问题讨论】:
【参考方案1】:您的 json 没有任何问题。如果您在控制台中打印它,您会看到打印的值是您期望的值。
"password":"Abc134","companyId":"CM1","userName":"450012"
试试看:
Console.WriteLine($"json");
如果你真的,真的想去掉那个“额外的”花括号,只需将结果转换为字符串。
var jsonString = json.ToString();
上面应该做的工作。
我只是建议您将方法更改为:
var json2 = NSJsonSerialization.Serialize(dictionary, NSJsonWritingOptions.PrettyPrinted, out error);
使用PrettyPrinted 选项。
希望这会有所帮助。-
【讨论】:
我试图将json字符串传递给requset.Body
和request.Body
确实将NSData
作为参数,因此我使用NSJsonSerialization
但问题是NSJsonSerialization
确实访问了它的第一个参数为NSObject
那么如何将我的"password":"Abc134","companyId":"CM1","userName":"450012"
转换为NSJsonSerialization
可以接受的NSObject os【参考方案2】:
是的,您可以尝试创建一个自定义对象进行序列化。创建一个简单的普通对象来保存您想要的数据。
User user = new User()
UserName = "JohnDoe",
Password = "xxx",
CompanyId = 01
;
request.Body = NSJsonSerialization.Serialize(user, 0, out error);
然后序列化它,你会看到正确的 json 格式。
【讨论】:
这不起作用,因为您无法将 xamarinUser
对象转换为 NSObject
。以上是关于NSDictionary 到 Xamarin.iOS 中的 Json的主要内容,如果未能解决你的问题,请参考以下文章
如何在序列化为 json 之前将 NSDictionary 添加到另一个 NSDictionary
将对象 NSMutableArray 添加到 NSDictionary
Xamarin Firebase iOS Analytics 抛出 AOT MTOUCH ERROR MT3001 - Firebase.Analytics.dll