2016-08-20 2 views
0

다음 json이 문자열 형식입니다. 어떻게 그것을 자바 객체로 변환할까요? 나는 다음과 같이 JSON 파서를 사용하려고Json String을 Java Object로 변환하는 방법?

JSON Srting

String allCameraList = [{ 
    "name": "Camera1", 
    "displayURL": "Stream-1" 
}, { 
    "name": "Camera2", 
    "displayURL": "Stream-3" 
}, { 
    "name": "Camera4", 
    "displayURL": "Stream-7" 
}, { 
    "name": "Camera3", 
    "displayURL": "Stream-5" 
}, { 
    "name": "Camera5", 
    "displayURL": "Stream-10" 
}, { 
    "name": "Camera6", 
    "displayURL": "Stream-12" 
}] 

자바 Entity 클래스

public class CameraDetails 
{ 
    private String name; 
    private String displayURL; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDisplayURL() { 
     return displayURL; 
    } 

    public void setDisplayURL(String displayURL) { 
     this.displayURL = displayURL; 
    }} 

는 :

JsonParser parser = new JsonParser(); 
    String json = parser.parse(allCameraList) 
      .getAsJsonObject() 
      .getAsJsonObject("name") 
      .toString(); 

는 다음과 같은 excep을 던졌다 기 :

java.lang.IllegalStateException: Not a JSON Object 

내 JSON 문자열이 {[하지 시작이므로주의 해주십시오.

답변

0

String을 Json 배열로 변환 할 수 있습니다.

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = mapper.writeValueAsString(allCameraList); 
JSONArray json = (JSONArray) parser.parse(jsonInString); 

보세요.

import org.codehaus.jackson.map.ObjectMapper; 

static ObjectMapper mapper=new ObjectMapper(); 
public ObjectMapper getMapperObject(){ 
    return mapper; 
} 

mapper=TypeConvertion.getMapperObject(); 
String jsonString=mapper.writeValueAsString(allCameraList); 
List<CameraDetails> newMSExp=mapper.readValue(jsonString, new TypeReference<List<CameraDetails>>() {}); 
return newMSExp; 
0

실제로 이스케이프 문자 '/'와 큰 따옴표를 사용하지 않으면 문자열을 정의 할 수 없습니다. 당신은 파일에서 읽어 다음과 같이 문자열로 변환 할 수 있습니다

private static String readFile(String path, Charset encoding) 
     throws IOException 
{ 
    byte[] encoded = Files.readAllBytes(Paths.get(path)); 
    return new String(encoded, encoding); 
} 

당신은 인코딩 방법

다음으로 StandardCharsets.UTF_8을 사용할 수 있습니다, 당신은 얻은 문자열에 후 처리를 할 수 있습니다. 당신의 유스 케이스의 경우 아래 코드가 작동해야합니다.

private static String postProcess(String string) { 
    String result; 
    result = string.substring(1,string.length()-1); 
    return "{" + result + "}"; 
} 

이 단계를 수행 한 후에 JSON으로 구문 분석 할 수 있습니다.

관련 문제