2016-01-18 81 views
1

這個字符串格式錯誤這是我的實際JSON響應:如何糾正IOS

{ 
"x": { 
"user": { 
"id": 1, 
"name": "a" 
}, 
"startday": "2016-01-10", 
"status": "New", 
"total": 1, 
"time_entries": [ 
{ 
"id": 766, 
"project": { 
"id": 3, 
"name": "b" 
}, 
"issue": { 
"id": 4 
}, 
"user": { 
"id": 1, 
"name": "c" 
}, 
"activity": { 
"id": 8, 
"name": "d" 
} 
"hours": 1, 
"comments": "", 
"spent_on": "2016-01-10" 
} 
] 
} 
} 

我創建動態這種反應,是這樣的:

NSString * newstring = [NSString stringWithFormat:@"{\\\"wk_time\\\":\%@\{\\\"user\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"startday\\\":\\\"%@\\\",\\\"status\\\":\\\"%@\\\",\\\"total\\\":\%@\,\\\"time_entries\\\":[{\\\"id\\\":766,\\\"project\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"issue\\\":\%@\{\\\"id\\\":\%@\%@\,\\\"user\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"activity\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"hours\\\":\%@\,\\\"comments\\\":\%@\,\\\"spent_on\\\":\\\"%@\\\"\%@\}",,,...]; 

然後,做到在規定的格式:

NSString * newstring1 = [NSString stringWithFormat:@「\"@%@\"",newstring]; 
NSLog(@"%@",newstring1); 

所以,迴應是:

@"{\"x\":{\"user\":{\"id\":1,\"name\":\"b\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"time_entries\":[{\"id\":766,\"project\":{\"id\":3,\"name\":\"a\"},\"issue\":{\"id\":4},\"user\":{\"id\":1,\"name\":\"b\"},\"activity\":{\"id\":8,\"name\":\"c\"},\"hours\":1.0,\"comments\":\"\",\"spent_on\":\"2016-01-10\"}]}}」 

如果我靜態發佈此迴應是這樣的:

NSString * jsoncode [email protected]"{\"x\":{\"user\":{\"id\":1,\"name\":\"b\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"time_entries\":[{\"id\":766,\"project\":{\"id\":3,\"name\":\"a\"},\"issue\":{\"id\":4},\"user\":{\"id\":1,\"name\":\"b\"},\"activity\":{\"id\":8,\"name\":\"c\"},\"hours\":1.0,\"comments\":\"\",\"spent_on\":\"2016-01-10\"}]}}"; 
NSData *objectData = [jsoncode dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError]; 

它得到serialized.shows的values.on在這樣動態地創建這種scenario.But:

NSString * newstring = [NSString stringWithFormat:@"{\\\"wk_time\\\":\%@\{\\\"user\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"startday\\\":\\\"%@\\\",\\\"status\\\":\\\"%@\\\",\\\"total\\\":\%@\,\\\"time_entries\\\":[{\\\"id\\\":766,\\\"project\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"issue\\\":\%@\{\\\"id\\\":\%@\%@\,\\\"user\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"activity\\\":\%@\{\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"hours\\\":\%@\,\\\"comments\\\":\%@\,\\\"spent_on\\\":\\\"%@\\\"\%@\}",,,...]; 
NSString * newstring1 = [NSString stringWithFormat:@"@\"%@\"",newstring]; 
NSError *error=nil; 
NSData * objectData = [newstring1 dataUsingEncoding:NSUTF8StringEncoding]; 

日誌顯示數據值。 但在此步驟之後,

NSDictionary * json= [NSJSONSerialization JSONObjectWithData:objectData options:0 error:&error]; 

序列化後,它顯示空值。

NSLog(@"%@",error); 

在出現錯誤消息時顯示此消息。

錯誤域= NSCocoaErrorDomain代碼= 3840「的操作無法 完成。(可可錯誤3840)」(JSON文本不與陣列或 對象和選項,允許片段未設置啓動。)的UserInfo = 0x7fe0faa 上轉換爲字典{NSDebugDescription = JSON文本不與陣列或對象和 選項啓動以允許未設置片段。}

什麼可能是錯誤。如何糾正它?請在此需要指導。感謝您的幫助提前。在做靜態工作,但動態創建它顯示錯誤?如何糾正它?

+0

建議解析之前入住http://jsonlint.com你兒子的字符串。你可能會知道哪裏出了問題。 –

回答

0

您錯過了,之後的activity字典。我格式化了'JSON'。

{ 
    "x":{ 
     "user":{ 
     "id":1, 
     "name":"a" 
     }, 
     "startday":"2016-01-10", 
     "status":"New", 
     "total":1, 
     "time_entries":[ 
     { 
      "id":766, 
      "project":{ 
       "id":3, 
       "name":"b" 
      }, 
      "issue":{ 
       "id":4 
      }, 
      "user":{ 
       "id":1, 
       "name":"c" 
      }, 
      "activity":{ 
       "id":8, 
       "name":"d" 
      }, 
      "hours":1, 
      "comments":"", 
      "spent_on":"2016-01-10" 
     } 
     ] 
    } 
} 

您需要檢查您的結尾處是否有許多網站和加載項。建議一個https://jsonformatter.curiousconcept.com/

鉻extention是:JSON編輯

+0

{\「x \」:{\「user \」:{\「id \」:1,\「name \」:\「a \」},\「startday \」:\「2016-01-10 \ 「\ 」狀態\「:\ 」新建\「,\ 」總\「:1.0,\ 」time_entries \「:[{\ 」ID \「:766 \ 」項目\「:{\」 ID \ 「:3,\」 名稱\ 「:\」 一\ 「},\」 的問題\ 「:{\」 ID \ 「:4},\」 用戶\ 「:{\」 ID \ 「:1,\」名\ 「:\」 b \ 「},\」 活動\ 「:{\」 ID \ 「:8,\」 名稱\ 「:\」 C:\ 「},\」 小時\ 「:1.0,\」 評論\「:\」\「,\」spent_on \「:\」2016-01-10 \「}]}}如果我把這只是在靜態數據.....它被序列化並顯示值..我不會錯過逗號或什麼 – jsaonboo