【问题标题】:Creating a JSONObject in iOS5在 iOS5 中创建 JSONObject
【发布时间】:2012-04-04 01:12:16
【问题描述】:

This answer 似乎展示了如何制作 JSONObject。

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSLog(@"%@", json);

输出看起来像一个 json 对象。但后来我尝试了以下方法:

NSLog(@"%@", [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil ]);

我得到的是

这似乎表明它不是真正的 JSONObject。你是怎么做的?

【问题讨论】:

    标签: string json ios5 nsstring nsobject


    【解决方案1】:

    可能是一个真正的 JSONObject,但 NSLog 不知道如何显示原始数据...... NSLog 中的"%@" 位需要一个带有编码的 NSString,而不是 NSData。 p>

    我可以通过两种方式判断事情是否顺利。

    #1) 使用[isValidJSONObject:] 方法

    #2) 重新解析您刚刚创建的 JSON 对象,看看它是否以您创建它的方式出现。您可以通过执行以下操作打印出 NSData:

    NSError * error = nil;
    NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ];
    if(jsonData == nil)
    {
        NSLog( @"error in parsing json data is %@", [error localizedDescription] );
    } else {
        NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];    
        NSLog( "json data is %@", jsonString );
    }
    

    【讨论】:

    • 如果我有一个 NSArray 的 NSStrings,我将如何将整个数组分配给一个键,然后将其转换为 JSON 对象?
    • 一个 JSONObject 只是一个 NSArray?
    • 您可以通过 NSJSONSerialization 从数据或流(但不能是数组或字典)创建 JSON 对象。您需要将数组转换为 NSData 才能进行 JSON 转换。看看at this related question and you might find the answer you seek
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2023-02-24
    相关资源
    最近更新 更多