美文网首页
json转换成实体类

json转换成实体类

作者: zhuyuansj | 来源:发表于2018-11-07 22:00 被阅读0次

今天同事问我个问题。她需要把字符串的json转换成实体类,但是一直报错。主要是实体类当中的内部类需要用静态字段static修饰,否则无法访问。
以下是报错信息

org.codehaus.jackson.map.JsonMappingException: 
No suitable constructor found for type [simple type, class com.macxen.speechrecognition.JsonRootBean$Result]
: can not instantiate from JSON object (need to add/enable type information?)
 at [Source: java.io.StringReader@3db5162; line: 1, column: 100] 
 (through reference chain: com.macxen.speechrecognition.JsonRootBean["origin_result"]
 ->com.macxen.speechrecognition.Origin_result["result"])

1.首先导入marven

<dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-lgpl</artifactId>
            <version>1.9.13</version>
            <scope>test</scope>
</dependency>

2.jackonMapper

package com.sunian.besjon;

import org.codehaus.jackson.map.ObjectMapper;

/**
 * @author sunian
 * @name speechRecognition
 * @class name:com.sunian.speechrecognition.util
 * @time 2018/11/7 10:14
 * @describe describe
 */
public class JacksonMapper {
    private static final ObjectMapper mapper = new ObjectMapper();

    private JacksonMapper() {

    }

    public static ObjectMapper getInstance() {
        return mapper;
    }

}

3.JsonRootBean

package com.macxen.besjon;

import java.io.Serializable;
import java.util.List;

/**
 * @author lainuo
 * @name speechRecognition
 * @class name:com.macxen.speechrecognition
 * @time 2018/11/6 19:30
 * @describe 实体类
 */
public class JsonRootBean implements Serializable {


    private String result_type;
    private String best_result;
    private List<String> results_recognition;
    private Origin_result origin_result;
    private int error;

    public JsonRootBean() {
    }

    public void setResult_type(String result_type) {
        this.result_type = result_type;
    }

    public String getResult_type() {
        return result_type;
    }

    public void setBest_result(String best_result) {
        this.best_result = best_result;
    }

    public String getBest_result() {
        return best_result;
    }

    public void setResults_recognition(List<String> results_recognition) {
        this.results_recognition = results_recognition;
    }

    public List<String> getResults_recognition() {
        return results_recognition;
    }

    public void setOrigin_result(Origin_result origin_result) {
        this.origin_result = origin_result;
    }

    public Origin_result getOrigin_result() {
        return origin_result;
    }

    public void setError(int error) {
        this.error = error;
    }

    public int getError() {
        return error;
    }

    public static class Result implements Serializable {

        private List<String> word;

        public Result() {
        }

        public void setWord(List<String> word) {
            this.word = word;
        }

        public List<String> getWord() {
            return word;
        }

    }

    public static class Origin_result implements Serializable {

        private Result result;
        private String sn;
        private int err_no;
        private long corpus_no;
        private double voice_energy;

        public Origin_result() {
        }

        public void setResult(Result result) {
            this.result = result;
        }

        public Result getResult() {
            return result;
        }

        public void setSn(String sn) {
            this.sn = sn;
        }

        public String getSn() {
            return sn;
        }

        public void setErr_no(int err_no) {
            this.err_no = err_no;
        }

        public int getErr_no() {
            return err_no;
        }

        public void setCorpus_no(long corpus_no) {
            this.corpus_no = corpus_no;
        }

        public long getCorpus_no() {
            return corpus_no;
        }

        public void setVoice_energy(double voice_energy) {
            this.voice_energy = voice_energy;
        }

        public double getVoice_energy() {
            return voice_energy;
        }

    }
}

4.JsonUtil

package com.sunian.besjon;

import org.codehaus.jackson.map.ObjectMapper;

/**
 * @author sunian
 * @name speechRecognition
 * @class name:com.sunian.speechrecognition.util
 * @time 2018/11/7 10:15
 * @describe describe
 */
public class JsonUtil {

    public static String getJsonString(Object object) throws Exception {
        return JacksonMapper.getInstance().writeValueAsString(object);
    }

    public static Object toObject(String jsonString, Class cls) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.readValue(jsonString, cls);
    }

}

5.执行测试类

   String json = "{\n" +
        "\t\"results_recognition\": [\"沧州。\"],\n" +
        "\t\"origin_result\": {\n" +
        "\t\t\"corpus_no\": 6621008601394242097,\n" +
        "\t\t\"err_no\": 0,\n" +
        "\t\t\"result\": {\n" +
        "\t\t\t\"word\": [\"沧州。\"]\n" +
        "\t\t},\n" +
        "\t\t\"sn\": \"fbc63952-92f7-49cd-b044-5204afd7ba01_s-79\",\n" +
        "\t\t\"voice_energy\": 12175.6875\n" +
        "\t},\n" +
        "\t\"error\": 0,\n" +
        "\t\"best_result\": \"沧州。\",\n" +
        "\t\"result_type\": \"final_result\"\n" +
        "}";
    @Test
    public void getJsonRootBean() throws Exception {
        Object o = JsonUtil.toObject(json, JsonRootBean.class);
        System.out.println(o);
    }

6.将json转换成实体类

相关文章

  • json转换成实体类

    今天同事问我个问题。她需要把字符串的json转换成实体类,但是一直报错。主要是实体类当中的内部类需要用静态字段st...

  • 【安卓相关】Gson 过滤字段

    比如说一个 实体类对象 需要转换成 json 字符串,但是有些字段不希望被转换 比如说一个实体类中有字段 举例:原...

  • JSON库

    JSON库将json对象或节点转换成字典、将json数组转换成列表、将json字符串转换成python字符串,tr...

  • Python json函数与Flask jsonify函数

    JSON数据结构 要把json与字典区分开来 dumps(字典转换成Json) loads(Json转换成字典) ...

  • JSON 和 Bean对象,List集合的转换

    【1】json 转换成Bean對象: 【2】json 转换成List集合:

  • ulua-cjson

    在Ulua项目中,一般网络数据实体类都会转换成Lua中的Table来完成,使用比类灵活方便,下面演示怎么在json...

  • php3

    1. json_decode() 将json格式字符串转换成对象 json_encode() 将对象转换成json...

  • 用jackson包实现json、对象、Map之间的转换

    1. 将对象转换成json 2. json转换成map 3. map转json 4. json转java对象

  • JavaScript 深拷贝

    Method1 JSON 使用 JSON 方法,先将 对象 转换成字符串,再将字符串转换成 JSON形式对象 Me...

  • 【温故知新】常见json的转换

    1.json字符串转换成List > 2.把json字符串转换成map,json字符串包含"的处理 3.Json字...

网友评论

      本文标题:json转换成实体类

      本文链接:https://www.haomeiwen.com/subject/pymbxqtx.html