首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Json字符串转换为Java对象?

如何将Json字符串转换为Java对象?
EN

Stack Overflow用户
提问于 2016-08-20 09:54:41
回答 2查看 3.8K关注 0票数 2

下面是字符串格式的json。如何将其转换为java对象?

JSON Srting

代码语言:javascript
复制
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实体类

代码语言:javascript
复制
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解析器时,如下所示:

代码语言:javascript
复制
 JsonParser parser = new JsonParser();
    String json = parser.parse(allCameraList)
            .getAsJsonObject()
            .getAsJsonObject("name")
            .toString();

它抛出了以下异常:

代码语言:javascript
复制
java.lang.IllegalStateException: Not a JSON Object

请注意,我的json字符串是从[开始的,而不是从{开始的。

EN

回答 2

Stack Overflow用户

发布于 2016-08-20 10:16:44

可以将字符串转换为Json数组。

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
String jsonInString = mapper.writeValueAsString(allCameraList);
JSONArray json = (JSONArray) parser.parse(jsonInString);

也来看看这个。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-10-20 19:50:20

如果不首先使用转义字符'/‘和双引号,就不能真正定义字符串。您可以从文件中读取它,将其转换为字符串,如下所示:

代码语言:javascript
复制
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作为编码方法。

接下来,您可以对获得的字符串进行后处理。对于您的用例,下面的代码应该可以工作。

代码语言:javascript
复制
private static String postProcess(String string) {
    String result;
    result = string.substring(1,string.length()-1);
    return  "{" + result + "}";
}

在这些步骤之后,您可以将其解析为JSON。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39052756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档