2016-08-20 100 views
0

我有以下字符串格式的json。如何將其轉換爲java對象?如何將Json字符串轉換爲Java對象?

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" 
}] 

的Java實體類

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

當我試圖使用JSON解析器像以下:

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

它扔以下excep重刑:

java.lang.IllegalStateException: Not a JSON Object 

請注意,我的JSON字符串是開始[{

回答

0

您可以將字符串轉換爲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。