2016-08-22 20 views
0

私はこのようなJSONました:以下のような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. 
}` 

をしかし、私はdictionaryにJSON文字列を取るために私のメソッドを使用します。

+ (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解析失败:%@",err); 
    return nil; 
} 
return dic; 
} 

私がnil辞書を取得し、失敗しました。

だから、私は辞書に変換json文字列を変換するために+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonStringを使用し、その後、:data=を変換し、そして私は再び失敗しました。

このタイプをjson文字列を辞書に変換する便利な方法はありますか?あなたのJSON文字列が間違っている

+0

できるだけ早くJSON文字列を文字列形式で表示できますか? – user3182143

+0

私の答えの兄弟をチェックしてください。 – user3182143

+0

実際のJSONよりも 'NSDictionary'オブジェクトの' -description'が得意だと思われます。どこからこれを得ているのですか?だから、その辞書を 'NSDictionary'オブジェクト(' description'の 'NSString'ではなく)に入れておけば、' NSDictionary * dict = [NSDictionary dictionaryWithJsonString:thatDict [@ "data"]] ' – Larme

答えて

0

ようにする必要があります。

あなたのJSONを使用すると、文字列にJSONに変換

NSString *strJson = @"{\"_j_msgid\":\"2404589949\",\"aps\" : {\"alert\" :\"EU519cU901a\",\"badge\":\"26\",\"sound\":\"happy.caf\"},\"data\":{\"title\" :\"U901aU77e5U516cU544a\",\"pushId\":\"15\",\"pushType\":\"NOTICECOL\"}}"; 

あなたは、文字列に変換キー "\

を追加する必要があり、それがあるべきときabove.Thatは、JSONのresponse.Whateverである\ ":\" 値\」

それは

辞書である場合

{\ "キー\": "値\" \}:{\ "キー\":値 "\

dictioanryがアレイ

[\ "応答\" 内にある場合\ "}]

そしてコーディング

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); 

は、印刷された結果は

あります3210
json is - { 
"_j_msgid" = 2404589949; 
aps =  { 
    alert = EU519cU901a; 
    badge = 26; 
    sound = "happy.caf"; 
}; 
data =  { 
    pushId = 15; 
    pushType = NOTICECOL; 
    title = U901aU77e5U516cU544a; 
}; 
} 
2

、それを一度確認してください、それは私が解決策を試してみましたが、私はそれを得た。この

{ 
"_j_msgid" : 2404589949, 
"aps" :  { 
    "alert" : "E\\U519c\\U901a", 
    "badge" : 26, 
    "sound" : "happy.caf" 
}, 
"data" : "{title=\\U901a%5CU77e5\\U516c%5CU544a, pushId=15, pushType=NOTICECOL}"} 
関連する問題