gpt4 book ai didi

ios - 如何使用 NSJSONSerialization 反序列化转义的 JSON 字符串?

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:38 30 4
gpt4 key购买 nike

我有一个 iOS 应用程序需要处理来自网络服务的响应。响应是一个包含序列化 JSON 对象的序列化 JSON 字符串,看起来像这样:

"{ \"name\" : \"Bob\", \"age\" : 21 }"

请注意,此响应是一个 JSON 字符串,而不是一个 JSON 对象。我需要做的是反序列化字符串,以便我得到:

{ "name" : "Bob", "age" : 21 }

然后我可以使用 +[NSJSONSerialization JSONObjectWithData:options:error:] 将其反序列化为 NSDictionary

但是,第一步该怎么做?也就是说,如何“取消转义”字符串以便我有一个序列化的 JSON 对象? +[NSJSONSerialization JSONObjectWithData:options:error:] 仅在顶级对象是数组或字典时有效;它不适用于字符串。

我最后写了 my own JSON string parser ,我希望符合 section 2.5 of RFC 4627 .但我怀疑我忽略了使用 NSJSONSerialization 或其他一些可用方法来执行此操作的一些简单方法。

最佳答案

如果你有嵌套的 JSON,那么只需调用 JSONObjectWithData 两次:

NSString *string =  @"\"{ \\\"name\\\" : \\\"Bob\\\", \\\"age\\\" : 21 }\"";
// --> the string
// "{ \"name\" : \"Bob\", \"age\" : 21 }"

NSError *error;
NSString *outerJson = [NSJSONSerialization JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding]
options:NSJSONReadingAllowFragments error:&error];
// --> the string
// { "name" : "Bob", "age" : 21 }
NSDictionary *innerJson = [NSJSONSerialization JSONObjectWithData:[outerJson dataUsingEncoding:NSUTF8StringEncoding]
options:0 error:&error];
// --> the dictionary
// { age = 21; name = Bob; }

关于ios - 如何使用 NSJSONSerialization 反序列化转义的 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16948427/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com