iPhone: проблемы при форматировании json для запроса к серверу - PullRequest
1 голос
/ 12 марта 2012

Мне нужно сделать параметры json как показано ниже.

Окончательный вывод должен быть,

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

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

Я пытаюсь сделать этот формат.Я получил время, статус, участие и маркер.Все в порядке.Но я сталкиваюсь с проблемой при создании массива «ответов».

Я использую приведенный ниже код для создания формата ответов 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\"}"
)

Но, когда я добавляю все в одном в окончательном выводе, как показано ниже,

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?

Спасибо!

1 Ответ

2 голосов
/ 12 марта 2012

Я тоже столкнулся с этой проблемой и создал быструю категорию для решения этой проблемы.

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...