2016-06-02 2 views
1

일부 JSON (파일에서 읽음)을 모의 작성하고 일부 스프링 컨트롤러의 결과로 반환하고 싶습니다.스프링 컨트롤러의 파일 (JSONObject)에서 JSON을 조롱했습니다.

파일이 같은 내부 물론 올바른 JSON 데이터 형식을 포함

{"country":"","city":""...} 

내 컨트롤러는 다음과 같습니다 아무 문제가 파일 자체 등 jsonObject 자체를 읽는 없다

@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; 
    } 
} 

, PoV를 debbuging에서 정확하지만, 브라우저에서 HTTP 상태 406을 얻고 있습니다. JSONObject 대신 String을 반환하는 것으로 (jsonObject.toString()을 반환) 시도했습니다. 그러나 인코딩 문제가 발생하여 브라우저의 JSON이 JSON 자체가 아닙니다 (일부 추가 슬래시, 따옴표 등).

파일에서 JSON을 반환하는 방법이 있습니까?

답변

0

JSON이 유효하지 않습니다. 이 오타가 아니라면,

{"country":"","city":""} 

주와 같은 속성 이름 주위의 오프닝 견적을보고 파일을 포맷하려고합니다.

+0

죄송합니다. 방금 고쳤습니다. 코드가 아니라이 주제에 대한 제 의견으로는 여기에서만 문제가있었습니다. JSON이 괜찮아 보입니다. {country} : "", "city": ""} 이 근본 원인은 아직 알 수 없습니다. 아이디어가 있으십니까? – Namek

+0

빈 문자열을 값으로 바꾸어보십시오. –

+0

JSON 자체에서 문제가되지 않습니다 ... 이미 시도 : { "country": "test1", "city": "test2"} – Namek

0

잭슨으로 시도해 보셨나요?

ObjectMapper mapper = new ObjectMapper(); 
Object json = mapper.readValue(input, Object.class); 
String s = mapper.writeValueAsString(json); 

아마도 응답 본문에 직접 작성 하시겠습니까? Jackson은 json을 돌봐야합니다.

-1
@Controller 
public class TestController { 

    @RequestMapping(
     value = "/test", 
     method = RequestMethod.GET, 
     produces = MediaType.APPLICATION_JSON_VALUE 
    ) 

    String getTest() { 
     return "json/test.json"; 
    } 
} 

이것은 나를 위해 일했습니다. JSON 파일에

경로 : \src\main\resources\static\json\test.json

-1

내가이 매우 늦게왔다 알고 있지만 왜 당신이 아래의 해결 방법을 시도하지 않습니다.

@RequestMapping(method = RequestMethod.GET) 
public @ResponseBody String getTest() throws IOException { 
    JSONObject jsonObject = new JSONObject(FileUtils.readFileToString(testMockup.getFile(), CharEncoding.UTF_8)); 
    return jsonObject.toString(); 
} 
+0

OP가 이미 게시 한 동일한 코드를 게시했습니다. 대답은 어디에 있습니까? – burna

+0

변경됨 : @ResponseBody String getTest() 및 jsonObject.toString(); –

+0

누구나 시도 했습니까 ?? –

관련 문제