Я вызываю конечную точку внешней системы, и она возвращает в ответе строку JSON. У меня нет контроля над внешней системой. Я вывожу строку JSON в файл, но она сохраняет все в одной строке. Как я могу преобразовать строку JSON в симпатичный формат с разрывами строки, возвратом каретки и всем прочим, а затем сохранить ее в текстовом файле? Могу ли я поручить преобразовать его на лету в симпатичный формат в запросе API?
Используя Java и библиотеку API Джерси для вызова конечной точки.
JSON Образец строки
Вместо вывода этого в текстовый файл:
{"employees":[ {"name":"Shyam", "email":"shyamjaiswal@gmail.com"}, {"name":"Bob", "email":"bob32@gmail.com"}, {"name":"Jai", "email":"jai87@gmail.com"} ]}
Я хочу, чтобы это выглядело так в текстовом файле:
{
"employees": [
{
"name": "Shyam",
"email": "shyamjaiswal@gmail.com"
},
{
"name": "Bob",
"email": "bob32@gmail.com"
},
{
"name": "Jai",
"email": "jai87@gmail.com"
}
]
}
Пример кода
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
public class JerseyAPISampleTest {
public static void main(String[] args) throws FileNotFoundException {
String endpointURL = "https://externalsystem.example.com/api/getExampleData/";
Client client = Client.create();
WebResource webResource = client.resource(endpointURL);
ClientResponse clientResponse = (ClientResponse)webResource.accept(new String[]{"application/json"}).get(ClientResponse.class);
if (clientResponse.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + clientResponse.getStatus());
}
String responseDataJSON = (String)clientResponse.getEntity(String.class);
PrintWriter printWriter = new PrintWriter("Example-Data.json");
printWriter.print(responseDataJSON);
printWriter.flush();
printWriter.close();
}
}