【问题标题】:How to convert a json String to json array using java and Gson如何使用 java 和 Gson 将 json 字符串转换为 json 数组
【发布时间】:2019-07-24 10:14:33
【问题描述】:

我有一个 json 字符串,里面有一个数组,我想只获取数组部分。

JSON 字符串:

{
    "jsonKeywords": [
        {
            "xmlNodeKWId": 0,
            "xmlNodeId": 35,
            "nodeKeyword": "dfdfdf",
            "keywordPosition": "Top",
            "keywordPrefix": "",
            "keywordSuffix": "abcd",
            "valueInLine": 0,
            "keywordMatchPattern": "",
            "templateId": 3
        }
    ]
}

我只想把它转换成:

[
        {
            "xmlNodeKWId": 0,
            "xmlNodeId": 35,
            "nodeKeyword": "dfdfdf",
            "keywordPosition": "Top",
            "keywordPrefix": "",
            "keywordSuffix": "abcd",
            "valueInLine": 0,
            "keywordMatchPattern": "",
            "templateId": 3
        }
]

我正在使用 Gson 库来处理 JSON。 有没有可能。

【问题讨论】:

  • @B001ᛦ 这样的 cmets 既不友好也不乐于助人。非常感谢您提供指向类似问题的单个链接...
  • 谁能给我一个链接?我可以在哪里找到这个或评论在谷歌中写什么或搜索。
  • 有一个look at this

标签: java json gson


【解决方案1】:

快速的方法是使用Map 和未经检查的强制转换来提取jsonKeywords 元素。假设您将 JSON 读入 inputJson 变量:

Gson gson = new Gson();
Map<String, ?> map = gson.fromJson(inputJson, Map.class);
System.out.println(gson.toJson(map.get("jsonKeywords")));

将输出:

[{"xmlNodeKWId":0.0,"xmlNodeId":35.0,"nodeKeyword":"dfdfdf","keywordPosition":"Top","keywordPrefix":"","keywordSuffix":"abcd","valueInLine":0.0,"keywordMatchPattern":"","templateId":3.0}]

【讨论】:

    【解决方案2】:

    响应类:

     public class Response{
    
        @SerializedName("jsonKeywords")
        private List<JsonKeywordsItem> jsonKeywords;
    
        public void setJsonKeywords(List<JsonKeywordsItem> jsonKeywords){
            this.jsonKeywords = jsonKeywords;
        }
    
        public List<JsonKeywordsItem> getJsonKeywords(){
            return jsonKeywords;
        }
    
        @Override
        public String toString(){
            return 
                "Response{" + 
                "jsonKeywords = '" + jsonKeywords + '\'' + 
                "}";
            }
    }
    

    JsonKeywordsItem 类:

    public class JsonKeywordsItem {
    
    @SerializedName("keywordSuffix")
    private String keywordSuffix;
    
    @SerializedName("valueInLine")
    private int valueInLine;
    
    @SerializedName("keywordMatchPattern")
    private String keywordMatchPattern;
    
    @SerializedName("nodeKeyword")
    private String nodeKeyword;
    
    @SerializedName("keywordPrefix")
    private String keywordPrefix;
    
    @SerializedName("keywordPosition")
    private String keywordPosition;
    
    @SerializedName("templateId")
    private int templateId;
    
    @SerializedName("xmlNodeKWId")
    private int xmlNodeKWId;
    
    @SerializedName("xmlNodeId")
    private int xmlNodeId;
    
    public void setKeywordSuffix(String keywordSuffix) {
        this.keywordSuffix = keywordSuffix;
    }
    
    public String getKeywordSuffix() {
        return keywordSuffix;
    }
    
    public void setValueInLine(int valueInLine) {
        this.valueInLine = valueInLine;
    }
    
    public int getValueInLine() {
        return valueInLine;
    }
    
    public void setKeywordMatchPattern(String keywordMatchPattern) {
        this.keywordMatchPattern = keywordMatchPattern;
    }
    
    public String getKeywordMatchPattern() {
        return keywordMatchPattern;
    }
    
    public void setNodeKeyword(String nodeKeyword) {
        this.nodeKeyword = nodeKeyword;
    }
    
    public String getNodeKeyword() {
        return nodeKeyword;
    }
    
    public void setKeywordPrefix(String keywordPrefix) {
        this.keywordPrefix = keywordPrefix;
    }
    
    public String getKeywordPrefix() {
        return keywordPrefix;
    }
    
    public void setKeywordPosition(String keywordPosition) {
        this.keywordPosition = keywordPosition;
    }
    
    public String getKeywordPosition() {
        return keywordPosition;
    }
    
    public void setTemplateId(int templateId) {
        this.templateId = templateId;
    }
    
    public int getTemplateId() {
        return templateId;
    }
    
    public void setXmlNodeKWId(int xmlNodeKWId) {
        this.xmlNodeKWId = xmlNodeKWId;
    }
    
    public int getXmlNodeKWId() {
        return xmlNodeKWId;
    }
    
    public void setXmlNodeId(int xmlNodeId) {
        this.xmlNodeId = xmlNodeId;
    }
    
    public int getXmlNodeId() {
        return xmlNodeId;
    }
    
    @Override
    public String toString() {
        return
                "JsonKeywordsItem{" +
                        "keywordSuffix = '" + keywordSuffix + '\'' +
                        ",valueInLine = '" + valueInLine + '\'' +
                        ",keywordMatchPattern = '" + keywordMatchPattern + '\'' +
                        ",nodeKeyword = '" + nodeKeyword + '\'' +
                        ",keywordPrefix = '" + keywordPrefix + '\'' +
                        ",keywordPosition = '" + keywordPosition + '\'' +
                        ",templateId = '" + templateId + '\'' +
                        ",xmlNodeKWId = '" + xmlNodeKWId + '\'' +
                        ",xmlNodeId = '" + xmlNodeId + '\'' +
                        "}";
    }
    }
    
    
    
    
    Gson gson = new Gson();
          Response response = gson.fromJson("Your response string", Response.class);
                List<JsonKeywordsItem> mList = response.getJsonKeywords();
    

    【讨论】:

      【解决方案3】:

      您必须使用 JSONARRAY 从 JSON 中获取数据数组:

      JSONObject jsonObject= new JSONObject(jsonResponse);
      JSONArray jsonArray = jsonObject.getJSONArray("jsonKeywords");
      

      另外,Refer This Link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-16
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 2012-03-05
        • 2023-03-08
        • 1970-01-01
        相关资源
        最近更新 更多