尝试发送 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