【问题标题】:How to get each value from JSON string如何从 JSON 字符串中获取每个值
【发布时间】:2019-05-30 08:22:23
【问题描述】:

我有这个 JSON 字符串,我需要获取每个 docmanId 和每个 dz,所以我可以遍历它们并使用它们。

我曾尝试使用gson 库来做到这一点,但我似乎不明白。

JSON 数组:

[{"docmanId":1,"dz":"CR"},
{"docmanId":1,"dz":"EU"},
{"docmanId":1,"dz":"JD"},
{"docmanId":1,"dz":"LT"},
{"docmanId":10,"dz":"CR"},
{"docmanId":10,"dz":"EU"},
{"docmanId":10,"dz":"LT"},
{"docmanId":100,"dz":"CR"},
{"docmanId":100,"dz":"EU"},
{"docmanId":100,"dz":"JD"},
{"docmanId":100,"dz":"LT"},
{"docmanId":1000,"dz":"CR"},
{"docmanId":1000,"dz":"EU"},
{"docmanId":1000,"dz":"JD"},
{"docmanId":1000,"dz":"LT"},
{"docmanId":10000,"dz":"ES"},
{"docmanId":10000,"dz":"EU"},
{"docmanId":10000,"dz":"JD"},
{"docmanId":100000,"dz":"CR"},
{"docmanId":100000,"dz":"EU"},
{"docmanId":100000,"dz":"JD"},
{"docmanId":100000,"dz":"LT"},
{"docmanId":100001,"dz":"CR"},
{"docmanId":100001,"dz":"EU"},
{"docmanId":100001,"dz":"LT"},
{"docmanId":100002,"dz":"CR"},
{"docmanId":100002,"dz":"EU"},
{"docmanId":100002,"dz":"JD"},
{"docmanId":100003,"dz":"CR"},
{"docmanId":100003,"dz":"EU"},
{"docmanId":100003,"dz":"JD"},
{"docmanId":100003,"dz":"LT"},
{"docmanId":100004,"dz":"CR"},
{"docmanId":100004,"dz":"EU"},
{"docmanId":100004,"dz":"JD"},
{"docmanId":100005,"dz":"CR"},
{"docmanId":100005,"dz":"EU"},
{"docmanId":100005,"dz":"JD"},
{"docmanId":100005,"dz":"LT"},
{"docmanId":100006,"dz":"CR"},
{"docmanId":100006,"dz":"EU"},
{"docmanId":100006,"dz":"JD"},
{"docmanId":100006,"dz":"LT"},
{"docmanId":100007,"dz":"CR"},
{"docmanId":100007,"dz":"EU"},
{"docmanId":100007,"dz":"JD"}]

【问题讨论】:

    标签: java arrays json gson


    【解决方案1】:

    使用org.json

      JSONArray jSONArray = new JSONArray("your input array");
      int length = jSONArray.length();
      for (int i = 0; i < length; i++) {
            JSONObject jSONObject= jSONArray.getJSONObject(i);
            System.out.println(jSONObject.get("docmanId"));
            System.out.println(jSONObject.get("dz"));
        }
    

    【讨论】:

      【解决方案2】:

      jackson

              String json = "[{\"docmanId\":1,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":1,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":1,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":1,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":10,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":10,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":10,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":1000,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":1000,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":1000,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":1000,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":10000,\"dz\":\"ES\"},\n" +
                      "{\"docmanId\":10000,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":10000,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100000,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100000,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100000,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100000,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100001,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100001,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100001,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100002,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100002,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100002,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100003,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100003,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100003,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100003,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100004,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100004,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100004,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100005,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100005,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100005,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100005,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100006,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100006,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100006,\"dz\":\"JD\"},\n" +
                      "{\"docmanId\":100006,\"dz\":\"LT\"},\n" +
                      "{\"docmanId\":100007,\"dz\":\"CR\"},\n" +
                      "{\"docmanId\":100007,\"dz\":\"EU\"},\n" +
                      "{\"docmanId\":100007,\"dz\":\"JD\"}]";
      
              ObjectMapper objectMapper = new ObjectMapper();
              DocmanList docmanList = objectMapper.readValue(json, DocmanList.class);
      
              //logic below
          }
      
      public class Docman {
          private long docmanId;
          private String dz;
      
          public long getDocmanId() {
              return docmanId;
          }
      
          public void setDocmanId(long docmanId) {
              this.docmanId = docmanId;
          }
      
          public String getDz() {
              return dz;
          }
      
          public void setDz(String dz) {
              this.dz = dz;
          }
      }
      
      public class DocmanList extends ArrayList<Docman> {
      }
      

      【讨论】:

        【解决方案3】:

        你可以通过在列表的java对象中生成一个类来转换它。

        首先生成一个类

        ------------------------com.example.Example.java----- ------------------------------

        package com.example;
        
        import java.io.Serializable;
        import com.google.gson.annotations.Expose;
        import com.google.gson.annotations.SerializedName;
        import org.apache.commons.lang.builder.EqualsBuilder;
        import org.apache.commons.lang.builder.HashCodeBuilder;
        import org.apache.commons.lang.builder.ToStringBuilder;
        
        public class Example implements Serializable
        {
        
        @SerializedName("docmanId")
        @Expose
        private long docmanId;
        @SerializedName("dz")
        @Expose
        private String dz;
        private final static long serialVersionUID = 3195470113916852896L;
        
        /**
        * No args constructor for use in serialization
        * 
        */
        public Example() {
        }
        
        /**
        * 
        * @param docmanId
        * @param dz
        */
        public Example(long docmanId, String dz) {
        super();
        this.docmanId = docmanId;
        this.dz = dz;
        }
        
        public long getDocmanId() {
        return docmanId;
        }
        
        public void setDocmanId(long docmanId) {
        this.docmanId = docmanId;
        }
        
        public Example withDocmanId(long docmanId) {
        this.docmanId = docmanId;
        return this;
        }
        
        public String getDz() {
        return dz;
        }
        
        public void setDz(String dz) {
        this.dz = dz;
        }
        
        public Example withDz(String dz) {
        this.dz = dz;
        return this;
        }
        
        @Override
        public String toString() {
        return new ToStringBuilder(this).append("docmanId", docmanId).append("dz", dz).toString();
        }
        
        @Override
        public int hashCode() {
        return new HashCodeBuilder().append(docmanId).append(dz).toHashCode();
        }
        
        @Override
        public boolean equals(Object other) {
        if (other == this) {
        return true;
        }
        if ((other instanceof Example) == false) {
        return false;
        }
        Example rhs = ((Example) other);
        return new EqualsBuilder().append(docmanId, rhs.docmanId).append(dz, rhs.dz).isEquals();
        }
        
        }
        Now Tell it to parse a List (of Welcome) instead. Since List is generic you will typically use a **TypeReference**
        List<Welcome> participantJsonList = mapper.readValue(jsonString, new TypeReference<List<Welcome>>(){});
        

        使用 http://www.jsonschema2pojo.org/ 将您的 json 转换为 java 类。

        【讨论】:

          【解决方案4】:

          您可以使用 JsonPath 解析它:

          static String json = "...";
          public static void main(String[] args) {
              String pageName = JsonPath.read(json, "$.pageInfo.pageName");
              System.out.println(pageName);
          
              Integer posts = JsonPath.read(json, "$.posts.length()");
          
              for(int i=0; i < posts; i++) {
                  String post_id = JsonPath.read(json, "$.posts[" + i + "].post_id");
                  System.out.println(post_id);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2017-07-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-30
            • 2021-07-13
            • 1970-01-01
            • 1970-01-01
            • 2015-03-22
            相关资源
            最近更新 更多