ios - 数组iOS的Json序列化

标签 ios iphone json ipad

我正在尝试使用json序列化从对象创建字符串

输入我有

NSDictionary *sampledict = @{@"TextVal": @"10233"};
NSArray *arr = [NSArray arrayWithObject:sampledict];

需要输出
[{\"testval\":\"10233\"}]

我尝试了什么
    NSDictionary *sampledict = @{@"TextVal": @"10233"};
    NSArray *arr = [NSArray arrayWithObject:sampledict];
    NSData *innerJson = [NSJSONSerialization dataWithJSONObject:arr options:0 error:NULL];
    NSString *innerJsonString = [[NSString alloc] initWithData:innerJson encoding:NSUTF8StringEncoding];


    NSLog(@"%@",innerJsonString);

   // NSMutableDictionary *dict = [NSMutableDictionary dictionary];
   // [dict setObject:innerJsonString forKey:@"sampleId"];

    NSData *json = [NSJSONSerialization dataWithJSONObject:innerJsonString options:0 error:NULL];
    NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
    NSLog(@"%@", jsonString);

它崩溃了

*由于未捕获的异常而终止应用程序
'NSInvalidArgumentException',原因:'*
+ [NSJSONSerialization
dataWithJSONObject:options:error:]:JSON中的无效顶级类型
写'

崩溃是因为它没有顶级字典,可以将其放入字典中。但是如何从该对象获取此json?

最佳答案

您在做错的是尝试从对象生成JSON字符串,而该对象又是一个字符串:

[dict setObject:innerJsonString forKey:@"sampleId"];
NSData *json = [NSJSONSerialization dataWithJSONObject:innerJsonString options:0 error:NULL]; //innerJsonString is a string that can't be serialized as JSON

更改为:
[dict setObject:arr forKey:@"sampleId"];
NSData *json = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];

它应该工作。

编辑
对于您的特定输出要求,可以使用:
NSDictionary *sampledict = @{@"TextVal": @"10233"};
NSArray *arr = [NSArray arrayWithObject:sampledict];
NSData *innerJson = [NSJSONSerialization dataWithJSONObject:arr options:0 error:NULL];
NSString *innerJsonString = [[NSString alloc] initWithData:innerJson encoding:NSUTF8StringEncoding];

NSLog(@"%@",innerJsonString);

但是我认为您已经从代码的第一部分中获取了所需的JSON,并且您已经自己解决了它:)

关于ios - 数组iOS的Json序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034644/

相关文章:

ios - Swift Sprite 套件 : How do I make it so that iAd displays a new add after a certain time interval?

iphone - 无法在 AFNetworking 客户端 IOS 5/6 中维护 session

javascript - 将 json 列表动态绑定(bind)到 HTML

javascript - 如何使用 JavaScript 读取 Json 中的数组

iphone - objective-c - 文本缩进

ios - Firebase 和 SwiftUI 实时预览的问题

ios - 呈现弹出窗口时 UIBarButtonItem 不会变成灰色

ios - 作为对象减去数字 - Objective C

iphone - 我正在学习的 "Objective-C"有多少是通用的 Objective-C,而不是 Apple 的框架?

javascript - 如何删除/替换 Node16 中的 Unicode 字符