Chciałbym wykpić trochę JSON (że czytam z pliku) i zwrócić go w wyniku jakiegoś kontrolera Spring.
Plik zawiera oczywiście poprawny format danych JSON, np .:
{"country":"","city":""...}
Mój kontroler wygląda następująco:
@RestController
@RequestMapping("/test")
public class TestController {
@Value("classpath:/META-INF/json/test.json")
private Resource testMockup;
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody JSONObject getTest() throws IOException {
JSONObject jsonObject = new JSONObject(FileUtils.readFileToString(testMockup.getFile(), CharEncoding.UTF_8));
return jsonObject;
}
}
Nie ma problemu z odczytywaniem samego pliku itp.
jsonObject
samo w sobie jest poprawne od debugowania PoV, jednak dostaję Status HTTP 406 z przeglądarki. Próbowałem też tylko zwrócić String (przez powrót jsonObject.toString()
), zamiast JSONObject
. Powoduje to jednak problemy z kodowaniem - dlatego JSON z przeglądarki nie jest sam JSON (niektóre dodatkowe ukośniki, cudzysłowy itp.).
Czy jest jakiś sposób, aby zwrócić JSON z pliku?
Odpowiedzi:
1 dla odpowiedzi № 1@Controller
public class TestController {
@RequestMapping(
value = "/test",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE
)
String getTest() {
return "json/test.json";
}
}
To działało dla mnie.
Ścieżka do pliku JSON: srcmainresourcesstaticjsontest.json
0 dla odpowiedzi nr 2
To nie jest poprawny JSON. Jeśli nie jest to literówka, spróbuj sformatować plik tak, aby wyglądał
{"country":"","city":""}
Zwróć uwagę na cytat otwierający wokół nazwy nieruchomości.
0 dla odpowiedzi № 3
Próbowałeś z Jacksonem?
ObjectMapper mapper = new ObjectMapper();
Object json = mapper.readValue(input, Object.class);
String s = mapper.writeValueAsString(json);
A może piszesz to prosto do odpowiedzi? Jackson powinien zająć się Jsonem.
-1 dla odpowiedzi № 4
Wiem, że się spóźniłem, ale dlaczego nie wypróbujesz poniższego obejścia.
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody String getTest() throws IOException {
JSONObject jsonObject = new JSONObject(FileUtils.readFileToString(testMockup.getFile(), CharEncoding.UTF_8));
return jsonObject.toString();
}