尝试发送 post 请求时出现无效 json 错误
Getting invalid json error when trying to send post rquest
我有一个 JSON 字符串,我使用下面的 GSON 库将其转换为 JSON:
Gson g = new Gson();
String json = "{\"user\":\"c8689ls8-7da5-4ac8-8afa-5casdf623302\",\"pass\":\"22Lof7w9-2b8c-45fa-b619-12cf27dj386\"}";
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(g.toJson(json));
out.flush();
out.close();
然而,当我发送实际的 post 请求时,我收到以下错误消息:
{"message":"Invalid JSON: Unexpected string literal\n at [Source: UNKNOWN; line: 1, column: 108]","_links":{"self":{"href":"/endpoint","templated":false}}}
我不确定我的 JSON 字符串有什么问题,因为它看起来格式正确,后来被转换为 JSON。这个错误的原因是什么?
This method serializes the specified object into its equivalent Json representation.
* This method should be used when the specified object is not a generic type. This method uses
* {@link Class#getClass()} to get the type for the specified object, but the
* {@code getClass()} loses the generic type information because of the Type Erasure feature
* of Java. Note that this method works fine if the any of the object fields are of generic type,
* just the object itself should not be of a generic type. If the object is of generic type, use
* {@link #toJson(Object, Type)} instead. If you want to write out the object to a
* {@link Writer}, use {@link #toJson(Object, Appendable)} instead.
*
* @param src the object for which Json representation is to be created setting for Gson
* @return Json representation of {@code src}.
*/
public String toJson(Object src) {
if (src == null) {
return toJson(JsonNull.INSTANCE);
}
return toJson(src, src.getClass());
}
它的意思是获取一个对象实例,并将其转换为 json 字符串格式。
您要做的是将 JSON 字符串传递给该方法。它不会工作
你想要的是
gson.fromJson("yourStringJSONHere", YourClassWhichMatchesJSONVariables.class)
或者,如果您没有映射到您的 JSON 的 class,而只是想要一个通用的:
JsonElement jelement = new JsonParser().parse(yourJSONString);
JSON parsing using Gson for Java
我有一个 JSON 字符串,我使用下面的 GSON 库将其转换为 JSON:
Gson g = new Gson();
String json = "{\"user\":\"c8689ls8-7da5-4ac8-8afa-5casdf623302\",\"pass\":\"22Lof7w9-2b8c-45fa-b619-12cf27dj386\"}";
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(g.toJson(json));
out.flush();
out.close();
然而,当我发送实际的 post 请求时,我收到以下错误消息:
{"message":"Invalid JSON: Unexpected string literal\n at [Source: UNKNOWN; line: 1, column: 108]","_links":{"self":{"href":"/endpoint","templated":false}}}
我不确定我的 JSON 字符串有什么问题,因为它看起来格式正确,后来被转换为 JSON。这个错误的原因是什么?
This method serializes the specified object into its equivalent Json representation.
* This method should be used when the specified object is not a generic type. This method uses
* {@link Class#getClass()} to get the type for the specified object, but the
* {@code getClass()} loses the generic type information because of the Type Erasure feature
* of Java. Note that this method works fine if the any of the object fields are of generic type,
* just the object itself should not be of a generic type. If the object is of generic type, use
* {@link #toJson(Object, Type)} instead. If you want to write out the object to a
* {@link Writer}, use {@link #toJson(Object, Appendable)} instead.
*
* @param src the object for which Json representation is to be created setting for Gson
* @return Json representation of {@code src}.
*/
public String toJson(Object src) {
if (src == null) {
return toJson(JsonNull.INSTANCE);
}
return toJson(src, src.getClass());
}
它的意思是获取一个对象实例,并将其转换为 json 字符串格式。
您要做的是将 JSON 字符串传递给该方法。它不会工作
你想要的是
gson.fromJson("yourStringJSONHere", YourClassWhichMatchesJSONVariables.class)
或者,如果您没有映射到您的 JSON 的 class,而只是想要一个通用的:
JsonElement jelement = new JsonParser().parse(yourJSONString);
JSON parsing using Gson for Java