【问题标题】:Parse Json output from Sonar解析来自 Sonar 的 Json 输出
【发布时间】:2016-10-01 23:32:18
【问题描述】:

我正在调用声纳网络服务并得到低于 json 格式的输出。

[  
   {  
      "id":10252,
      "uuid":"ca49aeed-de29-41a1-b0e2-e2b7c7d1b6c5",
      "key":"UTILITY",
      "name":"UTILITY",
      "scope":"PRJ",
      "qualifier":"VW",
      "date":"2012-05-02T05:07:04-0400",
      "creationDate":"2009-03-12T09:03:35-0400",
      "lname":"UTILITY",
      "msr":[  
         {  
            "key":"ncloc",
            "val":253603.0,
            "frmt_val":"253,603"
         },
         {  
            "key":"test_success_density",
            "val":85.5,
            "frmt_val":"85.5%"
         },
         {  
            "key":"coverage",
            "val":96.0,
            "frmt_val":"96.0%"
         }
      ]
   }
]

现在我想在 java 中解析这个输出并获取 date、ncloc、test_success_density 和 coverage 的值。我该怎么做?我尝试了许多 java api,但在获取上述字段的值时遇到了问题。

【问题讨论】:

    标签: java json web-services


    【解决方案1】:

    照样做,

    注意:包括正确的 Jackson Jar(我使用 jackson-core-2.2.3.jar)

    你的主类的主方法应该是.....

    public static void main(String[] args) {
    
            ObjectMapper mapper = new ObjectMapper();
            String jsonInString = "[ {\"id\":10252, \"uuid\":\"ca49aeed-de29-41a1-b0e2-e2b7c7d1b6c5\", \"key\":\"UTILITY\", \"name\":\"UTILITY\", \"scope\":\"PRJ\", \"qualifier\":\"VW\", \"date\":\"2012-05-02T05:07:04-0400\", \"creationDate\":\"2009-03-12T09:03:35-0400\", \"lname\":\"UTILITY\", \"msr\":[       {\"key\":\"ncloc\",\"val\":253603.0,\"frmt_val\":\"253,603\"},      {\"key\":\"test_success_density\",\"val\":85.5,\"frmt_val\":\"85.5%\"},         {\"key\":\"coverage\",\"val\":96.0,\"frmt_val\":\"96.0%\"}      ] } ]";
    
            //JSON from String to Object
            try {
                Bean[] objs = mapper.readValue(jsonInString, Bean[].class);
                for(Bean b : objs){
                    //System.out.println(b); here you have Bean Object's Array and you can do whatever you want...
                }
            } catch (JsonParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JsonMappingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    

    假设你的 Bean.java 将是,

    import java.util.Date;
    import java.util.List;
    
    public class Bean {
    
        private long id;
        private String uuid;
        private String key;
        private String name; 
        private String scope;
        private String qualifier;
        private Date date;
        private Date creationDate;
        private String lname;
        private List<Msr> msr;
        public long getId() {
            return id;
        }
        public void setId(long id) {
            this.id = id;
        }
        public String getUuid() {
            return uuid;
        }
        public void setUuid(String uuid) {
            this.uuid = uuid;
        }
        public String getKey() {
            return key;
        }
        public void setKey(String key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getScope() {
            return scope;
        }
        public void setScope(String scope) {
            this.scope = scope;
        }
        public String getQualifier() {
            return qualifier;
        }
        public void setQualifier(String qualifier) {
            this.qualifier = qualifier;
        }
        public Date getDate() {
            return date;
        }
        public void setDate(Date date) {
            this.date = date;
        }
        public Date getCreationDate() {
            return creationDate;
        }
        public void setCreationDate(Date creationDate) {
            this.creationDate = creationDate;
        }
        public String getLname() {
            return lname;
        }
        public void setLname(String lname) {
            this.lname = lname;
        }
        public List<Msr> getMsr() {
            return msr;
        }
        public void setMsr(List<Msr> msr) {
            this.msr = msr;
        }
    
        @Override
        public String toString() {
            return this.id + " : " +
                    this.uuid + " : " +
                    this.key + " : " +
                    this.name + " : " +
                    this.scope + " : " +
                    this.qualifier + " : " +
                    this.date + " : " +
                    this.creationDate + " : " +
                    this.lname + " : " +
                    this.msr ;
        }
    
    }
    
    class Msr{
    
        private String key;
        private String val;
        private String frmt_val;
    
        public String getKey() {
            return key;
        }
        public void setKey(String key) {
            this.key = key;
        }
        public String getVal() {
            return val;
        }
        public void setVal(String val) {
            this.val = val;
        }
        public String getFrmt_val() {
            return frmt_val;
        }
        public void setFrmt_val(String frmt_val) {
            this.frmt_val = frmt_val;
        } 
    
        @Override
        public String toString() {
            return this.key + " : " + this.val + " : " + this.frmt_val;
        }
    
    }
    

    做上面的事情,效果很好……!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-21
      • 2015-08-05
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多