jSONArray.toJSONString () дает недопустимую строку - PullRequest
0 голосов
/ 05 марта 2020

Я хочу записать ответ покоя моей конечной точки, который является json, в файл от контроллера. Я возвращаю JSONArray OBJ в ответ

  [
            {
                "_fields": {
                  "key1":"value1",
                    "key2","value2"
                }
            },
            {
                "_fields": {
                    "key1":"value1",
                    "key2","value2"
                }
            },
            {
                "_count": 12,
                "links": [
                    {
                        "rel": "prev",
                        "href": "http://localhost:8080/someprevurl"

                    },
                    {
                        "rel": "next",
                        "href": "http://localhost:8080/somenexturl"


                    },
                    {
                        "rel": "self",
                        "href": "http://localhost:8080/selfurl"
                    }
                ]
            }
        ]

Я переопределил методы строки, это мой метод, где я пытаюсь записать jsonarray в файл

public static void generateFile(JSONArray fileContent, String directory, String fileName, String extension) {
    logger.info("Writing into the file : {}{} start time : {}", fileName, extension, Instant.now());
    try {
        FileWriter file = new FileWriter(directory + fileName + extension);

        file.write(fileContent.toJSONString());
        file.flush();
    } catch (IOException e) {
        logger.error("Exception generated while generating file : {}", e.getMessage());

    }
}

, но после использования toJSONString ответ в файле выглядит так:

[
        {
            "_fields": MyDTONAME [
              key1=value1,
                key2="value2"
            ]
        },
        {
             "_fields": MyDTONAME [
              key1=value1,
                key2="value2"
            ]
        },
        [
            "_count": 12,
    links: [.......]
        ]
    ]

мне нужно определить полный формат, такой как замена [] на {} & = на : .jsonstring не предполагает, что это "" также отсутствует, так что мне делать? Пожалуйста, предложите

1 Ответ

0 голосов
/ 05 марта 2020

Не знаю, что вы испортили, так как вы не поделились соответствующим кодом, но вы пометили , поэтому вот как вы можете сгенерировать этот вывод JSON, используя Gson, и просто определяя данные в Картах и ​​Списках.

Код использует Java 9 List.of() и Map.of() для упрощения построения данных.

List<?> fileContent = List.of(
        Map.of("_fields", Map.of("key1", "value1", "key2", "value2")),
        Map.of("_fields", Map.of("key1", "value1", "key2", "value2")),
        Map.of("_count", 12, "links", List.of(
                Map.of("rel", "prev", "href", "http://localhost:8080/someprevurl"),
                Map.of("rel", "next", "href", "http://localhost:8080/somenexturl"),
                Map.of("rel", "self", "href", "http://localhost:8080/selfurl")
        ))
);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(fileContent);
System.out.println(json);

Вывод

[
  {
    "_fields": {
      "key2": "value2",
      "key1": "value1"
    }
  },
  {
    "_fields": {
      "key2": "value2",
      "key1": "value1"
    }
  },
  {
    "_count": 12,
    "links": [
      {
        "href": "http://localhost:8080/someprevurl",
        "rel": "prev"
      },
      {
        "href": "http://localhost:8080/somenexturl",
        "rel": "next"
      },
      {
        "href": "http://localhost:8080/selfurl",
        "rel": "self"
      }
    ]
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...