2012-03-12 5 views
1

以下のようにjsonパラメータを作成する必要があります。私はこのフォーマットを作るしようとしていますiPhone:サーバリクエスト用のjsonをフォーマットする際の問題

{"submissionTime":"\/Date(1331549630849)\/", 
"statusId":"0", 
"answers":[{"answer":"Yes","qid":167},{"answer":"Hello","qid":168}], 

"participantId":"16369", 
"token":"t_ikHOXVjlcsSb9Tfdn5RaO54JGQobHodUD5881SKevxy63jwLxe8ZPQvXYss4pR"} 

最終的な出力は、する必要があります。私は時間、statusid、participantidとトークンを得た。大丈夫だよ。しかし、私は "答え"配列を作るときに問題に直面しています。

以下のように答えをjson形式にするために、以下のコードを使用します。

NSArray *answerkeys = [NSArray arrayWithObjects:@"answer", @"qid",nil]; 
      NSString *qID = [NSString stringWithFormat:@"%d", [questionidArray objectAtIndex:i] ]; // for loop 
      NSArray *objectkeys = [NSArray arrayWithObjects:value, qID,nil];    
      NSString *answerjsonRequest = [pSr makeJSONObject:objectkeys :answerkeys]; 
answerjsonRequest = [(NSString *)answerjsonRequest stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

[textvaluesArray addObject:[NSString stringWithFormat:@"%@", answerjsonRequest]]; 

出力は以下の通りです。

(
    "{ \"answer\" : \"Hello\", \"qid\" : \"220421824\"}", 
    "{ \"answer\" : \"How are you\", \"qid\" : \"115781136\"}" 
) 

しかし、私は以下のような最終的な出力で1内のすべてのを追加してい、

NSString *jsonRequest = [pSr makeJSONObject:[NSArray arrayWithObjects: participantID, (NULL!=textvaluesArray)?textvaluesArray:@"0", [NSString stringWithFormat:@"%d", statusID], subTime, [appDelegate getSessionToken], nil] :[NSArray arrayWithObjects:@"participantId", @"answers", @"statusId", @"submissionTime", @"token", nil] ]; 

The final json result is this. 
{ 
    "submissionTime" : "\/Date(1331566698)\/", 
    "token" : "t_hvYoxifLQhxEKfyw1CAgVtgOfA3DjeB9jZ3Laitlyk9fFdLNjJ4Cmv6K8s58iN", 
    "participantId" : "16371", 
    "answers" : [ 
    "{ \"answer\" : \"Hello\", \"qid\" : \"220421824\"}", 
    "{ \"answer\" : \"Hello\", \"qid\" : \"115781136\"}" 
    ], 
    "statusId" : "0" 
} 

しかし、これは私が欲しいものではありません。私の期待されるJSONの出力は上記のトップです。私は多くの方法を試みましたが、これを達成できませんでした。正確なJSON出力を得るために解決するために私を助けてくれた人がいますか?

ありがとうございました!

答えて

2

私もこの問題に遭遇し、問題を処理するためのクイックカテゴリを作成しました。

@interface NSString (ReplaceForJSON) 
- (NSString*)replaceEscapedQuotes; 
@end 

@implementation NSString (ReplaceForJSON) 
- (NSString*)replaceEscapedQuotes 
{ 
    NSString* returnVal = [self stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""]; 

    returnVal = [returnVal stringByReplacingOccurrencesOfString:@"\"{" withString:@"{"]; 

    returnVal = [returnVal stringByReplacingOccurrencesOfString:@"}\"" withString:@"}"]; 

    return returnVal; 
} 
@end 
+0

あなたはどのように電話して修正することができますか? – Getsy

+0

'jsonRequest = [jsonRequest replaceEscapedQuotes]; ' – bdparrish

+0

本当にありがとう! – Getsy

関連する問題