如何将下面这样的 json 字符串转换为字典?
How to take a json string like this below to transform to dictionary?
我有一个 json 这样的:
`{
"_j_msgid" = 2404589949;
aps = {
alert = "E\U519c\U901a";
badge = 26;
sound = "happy.caf";
};
data = "{title=\U901a\U77e5\U516c\U544a, pushId=15, pushType=NOTICECOL}"; // this line is my want.
}`
但是,我用我的方法将 json 字符串取到 dictionary
:
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
NSLog(@"json fail:%@",err);
return nil;
}
return dic;
}
我失败了,得到一个零字典。
所以,我将data
的=
转换为:
,然后使用+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString
将转换后的json
字符串转换为字典,然后我又失败了
是否有一些有用的方法可以将这种 json
字符串转换为字典?
你的json字符串有误,请检查一次,应该是这样的
{
"_j_msgid" : 2404589949,
"aps" : {
"alert" : "E\U519c\U901a",
"badge" : 26,
"sound" : "happy.caf"
},
"data" : "{title=\U901a%5CU77e5\U516c%5CU544a, pushId=15, pushType=NOTICECOL}"}
我尝试了这个解决方案,我明白了。
你的 json 是 above.That 是 json response.Whatever 当你将 JSON 转换为字符串时它应该是
NSString *strJson = @"{\"_j_msgid\":\"2404589949\",\"aps\" : {\"alert\" :\"EU519cU901a\",\"badge\":\"26\",\"sound\":\"happy.caf\"},\"data\":{\"title\" :\"U901aU77e5U516cU544a\",\"pushId\":\"15\",\"pushType\":\"NOTICECOL\"}}";
当你转换成字符串时你应该添加
\"key\":\"value\"
如果是字典
{\"key\":\"value\"}
如果字典在数组中
[\"response\":{\"key\":\"value\"}]
然后编码
NSError *jsonError;
NSString *strJson = @"{\"_j_msgid\":\"2404589949\",\"aps\" : {\"alert\" :\"EU519cU901a\",\"badge\":\"26\",\"sound\":\"happy.caf\"},\"data\":{\"title\" :\"U901aU77e5U516cU544a\",\"pushId\":\"15\",\"pushType\":\"NOTICECOL\"}}";
NSData *objectData = [strJson dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData
options:NSJSONReadingMutableContainers
error:&jsonError];
NSLog(@"json is - %@",json);
打印出来的结果是
json is - {
"_j_msgid" = 2404589949;
aps = {
alert = EU519cU901a;
badge = 26;
sound = "happy.caf";
};
data = {
pushId = 15;
pushType = NOTICECOL;
title = U901aU77e5U516cU544a;
};
}
我有一个 json 这样的:
`{
"_j_msgid" = 2404589949;
aps = {
alert = "E\U519c\U901a";
badge = 26;
sound = "happy.caf";
};
data = "{title=\U901a\U77e5\U516c\U544a, pushId=15, pushType=NOTICECOL}"; // this line is my want.
}`
但是,我用我的方法将 json 字符串取到 dictionary
:
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
NSLog(@"json fail:%@",err);
return nil;
}
return dic;
}
我失败了,得到一个零字典。
所以,我将data
的=
转换为:
,然后使用+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString
将转换后的json
字符串转换为字典,然后我又失败了
是否有一些有用的方法可以将这种 json
字符串转换为字典?
你的json字符串有误,请检查一次,应该是这样的
{
"_j_msgid" : 2404589949,
"aps" : {
"alert" : "E\U519c\U901a",
"badge" : 26,
"sound" : "happy.caf"
},
"data" : "{title=\U901a%5CU77e5\U516c%5CU544a, pushId=15, pushType=NOTICECOL}"}
我尝试了这个解决方案,我明白了。
你的 json 是 above.That 是 json response.Whatever 当你将 JSON 转换为字符串时它应该是
NSString *strJson = @"{\"_j_msgid\":\"2404589949\",\"aps\" : {\"alert\" :\"EU519cU901a\",\"badge\":\"26\",\"sound\":\"happy.caf\"},\"data\":{\"title\" :\"U901aU77e5U516cU544a\",\"pushId\":\"15\",\"pushType\":\"NOTICECOL\"}}";
当你转换成字符串时你应该添加
\"key\":\"value\"
如果是字典
{\"key\":\"value\"}
如果字典在数组中
[\"response\":{\"key\":\"value\"}]
然后编码
NSError *jsonError;
NSString *strJson = @"{\"_j_msgid\":\"2404589949\",\"aps\" : {\"alert\" :\"EU519cU901a\",\"badge\":\"26\",\"sound\":\"happy.caf\"},\"data\":{\"title\" :\"U901aU77e5U516cU544a\",\"pushId\":\"15\",\"pushType\":\"NOTICECOL\"}}";
NSData *objectData = [strJson dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData
options:NSJSONReadingMutableContainers
error:&jsonError];
NSLog(@"json is - %@",json);
打印出来的结果是
json is - {
"_j_msgid" = 2404589949;
aps = {
alert = EU519cU901a;
badge = 26;
sound = "happy.caf";
};
data = {
pushId = 15;
pushType = NOTICECOL;
title = U901aU77e5U516cU544a;
};
}