【发布时间】:2016-12-06 16:52:02
【问题描述】:
我需要像这样形成 PUT 请求:
在 Java (android) 上创建的第一个示例:
public JSONObject putGameData(String answer_id) {
JSONObject jsonObject = new JSONObject();
if(myAnswersArray.contains(new String(answer_id))){
for(int i = 0; i < myAnswersArray.size(); i++)
if(answer_id.equals(myAnswersArray.get(i)))
myAnswersArray.remove(i);
} else {
myAnswersArray.add(answer_id);
}
JSONArray jsonArray = new JSONArray(myAnswersArray);
try {
jsonObject.put("answer_id", jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
参数:{ “answer_id”:[ “a104fccc555a60ea8e437d8b7f11dd12”, “ad4277811a26ebea5d72d09a164531ee”, “5a1cc90dc9b51d6f8793759cab11728f”], “令牌”:“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJzdWIiOiIx} P>
在 iOS 应用程序上,我发送这样的参数,这是不正确的。我的参数带有 \n 和其他空格...
参数:{ “{\” answer_id \ “:”:{ “\” 20052e3c88ef5c16d9ae0ac0d86ffbca \ “\ ”2600c200e39815352ec1c7d602d67d25 \“ ”:“ ”},“ 标记 ”:“ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJzdWIiOiIxMzUiLCJpc3MiOiJodHRwOlwv”} P>
我做到了:
NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:multipleAnswersArray options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSASCIIStringEncoding];
[post setObject:multipleAnswersArray forKey:@"answer_id"];
然后执行put data:
NSData *postData = [NSJSONSerialization dataWithJSONObject:post options:0 error:&error];
如何像第一个例子一样制作正确的格式?
【问题讨论】:
-
不要使用
NSJSONWritingPrettyPrinted那就是添加\n -
另外,正如所写,您的“请求参数”不是 JSON,“PARAMETERS:”后面是什么,但不包括“PARAMETERS:”。
-
@Larme 我已经排除了 NSJSONWritingPrettyPrinted 但情况相同。 :( 第一个变体是由 android 创建的,我将在问题的标题中添加代码以便更好地理解。也许它会有所帮助,有人知道如何在 Objective C 上编写相同的代码。
-
你为什么用
setObejct: multipleAnswersArray而不是setObject: jsonString? -
这不是
\n。只是转义字符。
标签: ios objective-c json