2016-08-20 107 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。

相关问题