下面是字符串格式的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();它抛出了以下异常:
java.lang.IllegalStateException: Not a JSON Object请注意,我的json字符串是从[开始的,而不是从{开始的。
发布于 2016-08-20 10:16:44
可以将字符串转换为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;发布于 2017-10-20 19:50:20
如果不首先使用转义字符'/‘和双引号,就不能真正定义字符串。您可以从文件中读取它,将其转换为字符串,如下所示:
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。
https://stackoverflow.com/questions/39052756
复制相似问题