2

我有一些数据,需要用这个结构创建一个 json 文件:

{"eventData":{"eventDate":"Jun 13, 2012 12:00:00 AM","eventLocation":{"latitude":43.93838383,"longitude":-3.46},"text":"hjhj","imageData":"raw data","imageFormat":"JPEG","expirationTime":1339538400000},"type":"ELDIARIOMONTANES","title":"accIDENTE"}

请有人给我一些代码如何将我的数据放入具有这种结构的 json 文件中,或者至少是一个关于你如何制作 json 结构的示例?

编辑

好的,所以我写了一些代码:

NSString *jsonString = @"[{\"eventData\":{\"eventDate\":\"Jun 13, 2012 12:00:00 AM\",\"eventLocation\":{\"latitude\":43.93838383,\"longitude\":-3.46},\"text\":\"hjhj\",\"imageData\":\"raw data\",\"imageFormat\":\"JPEG\",\"expirationTime\":1339538400000},\"type\":\"ELDIARIOMONTANES\",\"title\":\"accIDENTE\"}]";

    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *e;
    NSMutableArray *jsonList = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
    NSLog(@"jsonList: %@", jsonList);

jsonList 现在是一个 json 文件???它的格式是否正确?因为当我打印它时,输出是:

jsonList: (
        {
        eventData =         {
            eventDate = "Jun 13, 2012 12:00:00 AM";
            eventLocation =             {
                latitude = "43.93838383";
                longitude = "-3.46";
            };
            expirationTime = 1339538400000;
            imageData = "raw data";
            imageFormat = JPEG;
            text = hjhj;
        };
        title = accIDENTE;
        type = ELDIARIOMONTANES;
    }
)
4

3 回答 3

13

你看过苹果的“ NSJSONSerialization”类了吗?它从 iOS 5.0 开始可用。

您可以使用它将 Objective C 对象转换为 JSON 数据流,您可以将其发送到您的 Web 服务。

如果您想支持 5.0 之前的操作系统,还有其他可用的可能性(看看这个相关问题)。

于 2012-06-22T13:32:32.153 回答
3

如果只需要支持 iOS5 及更高版本,可以使用 Apple 的 NSJSONSerialization,如 Michael 所说。对于早期的 iO​​S 版本,您将需要使用第三方 json 解析库(我推荐 JSONKit,它是最快的)。

最终,您要做的是创建一个 NSDictionary,其中包含您希望 JSON 数据具有的键/值结构,并使用其中一种方法进行转换。

于 2012-06-22T13:35:48.370 回答
2

编辑了答案:

请使用 NSJSONSerialization 创建 JSON 对象。要创建 JSON 对象,请不要使用字符串。使用类似的东西dictionaryWithObjectsAndKeys:并将其转换为 JSON 对象

NSDictionary *PostParams = [NSDictionary dictionaryWithObjectsAndKeys:
                             [value], [key], nil];

如果您使用的是 iOS 6 和 Xcode 4.3,那么

NSDictionary *PostParams = @{value, key};
于 2012-06-22T13:34:52.973 回答