Xamarin.iOS中的NSDictionary到Json

Xamarin.iOS中的NSDictionary到Json,xamarin,xamarin.ios,nsdictionary,nsjsonserialization,Xamarin,Xamarin.ios,Nsdictionary,Nsjsonserialization,我正在尝试使用NSJsonSerialization.Serialize将NSDictionary转换为Json。但我没有得到预期的产出 Xamarin.iOS中的代码 var dictionary = new NSDictionary( new NSString("userName"), new NSString("450012"), new NSString("password"), new NSString("Abc134")

我正在尝试使用
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); 
问题是,
字典
变量的值正在显示

{{密码:Abc134,公司ID:CM1,用户名:450012}

而不是

{密码:Abc134,公司ID:CM1,用户名:450012}

它在前面和后面加了一个花括号


有没有办法为用户输入值生成正确的json字符串?是的,您可以尝试创建一个自定义对象进行序列化。创建一个简单的普通对象来保存所需的数据

User user = new User() {
    UserName = "JohnDoe",
    Password = "xxx",
    CompanyId = 01
};
request.Body = NSJsonSerialization.Serialize(user, 0, out error);

然后序列化它,您将看到格式正确的json。

您的json没有问题。如果您在控制台中打印它,您将看到打印的值就是您期望的值

{“密码”:“Abc134”,“公司ID”:“CM1”,“用户名”:“450012”}

尝试一下:

Console.WriteLine($“{json}”);

如果你真的,真的想去掉那个“多余的”大括号,就把结果转换成字符串

var jsonString=json.ToString();

以上应该做的工作

我建议您将方法更改为:
var json2=NSJsonSerialization.Serialize(字典,NSJsonWritingOptions.PrettyPrinted,out错误);

使用选项


希望这有帮助。-

这不起作用,因为您无法将xamarin
User
对象转换为
NSObject
。我只是试图将json字符串传递到
requset.Body
request中。Body
NSData
作为参数,因此我使用了
NSJsonSerialization
,但问题是
NSJsonSerialization
NSObject
的形式访问其第一个参数,因此如何将我的
{“password”:“Abc134”,“companyId”:“CM1”,“userName”:“450012”}
转换为可以接受它的NSObject操作系统