1. 程式人生 > >JsonObject將字符串轉化為對象

JsonObject將字符串轉化為對象

ebr eva mst ima 相似度 gen 轉載 err lmap

//JSON.parseObject,是將Json字符串轉化為相應的對象;JSON.toJSONString則是將對象轉化為Json字符串。

String sb=

{"message":"success","store":false,"redirect":"","term":[{"index":0,"term":"華為"},{"index":1,"term":"手機"}],"central":{"index":1,"type":"pmc","value":"手機"},"res":[{"value":"華為","index":"0","type":"pmb"},{"value":"手機","index":"1","type":"pmc"}],"brand":{"brandError":false,"brandRelationHas":false,"familyBrand":false,"hasBrand":true,"luceneBrand":false,"pmbIndex":-1,"pureBrand":false},"relate":{"pmb":[],"cen":[{"extension":0,"extensionV2":"手機通訊","field":"groupIDCombination","id":"20006","similarity":0.9919,"value":"手機"}]},"info":[[{"extension":0,"extensionV2":"","field":"brand_Name","id":"0864","similarity":1.0,"value":"華為(HUAWEI)"},{"extension":0,"extensionV2":"手機通訊","field":"groupIDCombination","id":"20006","similarity":0.9919,"value":"手機"}]],"entities":[{"entities":[{"extension":0,"extensionV2":"","field":"brand_Name","id":"0864","similarity":1.0,"value":"華為(HUAWEI)"},{"extension":0,"extensionV2":"手機通訊","field":"groupIDCombination","id":"20006","similarity":0.9919,"value":"手機"}],"score":100.0}],"rec":[[{"extension":0,"extensionV2":"","field":"brand_Name","id":"0864","similarity":1.0,"value":"華為(HUAWEI)"}],[{"extension":0,"extensionV2":"手機通訊","field":"groupIDCombination","id":"20006","similarity":0.9919,"value":"手機"}],[]],"label":[[{"extension":0,"extensionV2":"","field":"brand_Name","id":"0864","similarity":1.0,"value":"華為(HUAWEI)"}],[{"extension":0,"extensionV2":"手機通訊","field":"groupIDCombination","id":"20006","similarity":0.9919,"value":"手機"}],[]]}

 

 

QueryResultBean queryResultBean = JSON.parseObject(sb.trim(), QueryResultBean.class);

//將上面的json轉為bean對象後可以直接獲取

modelMap.put("term", queryResultBean.toTermStr());

 modelMap.put("info", queryResultBean.toInfoStr());

 

//結果為:

//{term=華為 手機 , info=brand_Name:華為(HUAWEI) groupIDCombination:手機}

 

 

//關鍵在Bean中的寫法,決定輸出結果的格式:

//1、QueryResultBean.java

 

public class QueryResultBean {
    private List<TermBean> term = new ArrayList<TermBean>();
    
    private List<List<GeneralEntity>> info = new ArrayList<List<GeneralEntity>>();
    


   


    public List<TermBean> getTerm() {
        return term;
    }


    public void setTerm(List<TermBean> term) {
        this.term = term;
    }


    public List<List<GeneralEntity>> getInfo() {
        return info;
    }


    public void setInfo(List<List<GeneralEntity>> info) {
        this.info = info;
    }


    public String toTermStr() {
        StringBuilder t = new StringBuilder();
        for (TermBean termBean : term) {
            t.append(termBean.getTerm()).append(" ");
        }
        return t.toString();
    }


    public String toInfoStr() {
        StringBuilder sBuilder = new StringBuilder();
        for (List<GeneralEntity> list : info) {
            for (GeneralEntity infoBean : list) {
                sBuilder.append(infoBean.field).append(":").append(infoBean.getValue()).append(" ");
            }
            sBuilder.append("\r\n");
        }
        return sBuilder.toString();
    }


}

 

 

//2、TermBean.java

 

public class TermBean {
    private Integer index;
    private String term;
    
    public TermBean() {
    }
    public TermBean(Integer index, String term) {
        this.index = index;
        this.term = term;
    }
    public Integer getIndex() {
        return index;
    }
    public void setIndex(Integer index) {
        this.index = index;
    }
    public String getTerm() {
        return term;
    }
    public void setTerm(String term) {
        this.term = term;
    }
}

 

3、通用實體GeneralEntity.java

 

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Comparator;


/**
 * 通用實體
 */
public class GeneralEntity implements Serializable {


    private static final long serialVersionUID = 4020348283149544060L;


    public String id = "0";//實體id
    public String field = "";//具體領域
    public String value = "";//領域值
    public double similarity = 0;//相似度
    public int extension = 0;//擴展字段(int,精排黑名單等)
    public String extensionV2 = "";//擴展字段(String)


    public GeneralEntity() {
    }


    public GeneralEntity(String field, String value, int extension) {
        this.field = field;
        this.value = value;
        this.extension = extension;
    }


    public GeneralEntity(String id, String field, String value, double similarity, String extensionV2) {
        this.id = id;
        this.field = field;
        this.value = value;
        BigDecimal b = new BigDecimal(similarity);
        this.similarity = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
        this.extensionV2 = extensionV2;
    }


    public GeneralEntity(String id, String field, String value, double similarity, int extension, String extensionV2) {
        this.id = id;
        this.field = field;
        this.value = value;
        BigDecimal b = new BigDecimal(similarity);
        this.similarity = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
        this.extension = extension;
        this.extensionV2 = extensionV2;
    }


    public String getId() {
        return id;
    }


    public void setId(String id) {
        this.id = id;
    }


    public String getField() {
        return field;
    }


    public void setField(String field) {
        this.field = field;
    }


    public String getValue() {
        return value;
    }


    public void setValue(String value) {
        this.value = value;
    }


    public int getExtension() {
        return extension;
    }


    public void setExtension(int extension) {
        this.extension = extension;
    }


    public String getExtensionV2() {
        return extensionV2;
    }


    public void setExtensionV2(String extensionV2) {
        this.extensionV2 = extensionV2;
    }


    public double getSimilarity() {
        return similarity;
    }


    public void setSimilarity(double similarity) {
        BigDecimal b = new BigDecimal(similarity);
        this.similarity = b.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
    }


    public static class AzComparator implements Comparator<GeneralEntity> {
        @Override
        public int compare(GeneralEntity a1, GeneralEntity a2) {
            return Double.compare(a2.similarity, a1.similarity);
        }
    }


    @Override
    public int hashCode() {
        final int prime = 100;
        int res = 1;
        res = prime * res + ((id == null) ? 0 : id.hashCode());
        res = prime * res + ((field == null) ? 0 : field.toLowerCase().hashCode());
        res = prime * res + ((value == null) ? 0 : value.hashCode());
        return res;
    }


    @Override
    public boolean equals(Object obj) {
        GeneralEntity entity;
        if (obj instanceof GeneralEntity) {
            entity = (GeneralEntity) obj;
        } else {
            return false;
        }
        return entity.id != null && entity.id.equals(this.id) && entity.field.equals(this.field) && entity.value.equals(this.value);
    }
}

  

---------------------
作者:xiaosongwahaha
來源:CSDN
原文:https://blog.csdn.net/xiaosongwahaha/article/details/78848390
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

JsonObject將字符串轉化為對象