JOSN数据转各种类型
一.json数据转list,map(只需要部分数据可以用)
1.maven的pom文件
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
2.这里是我自己准备的string类型json格式的字符串
{
"featureTypes": {
"featureType": [
{
"name": 1111111111111,
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/1111111111111.json"
},
{
"name": "dzdt2017_K_HYD_PY",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/dzdt2017_K_HYD_PY.json"
},
{
"name": "dzdt2017_K_LRD_PY",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/dzdt2017_K_LRD_PY.json"
},
{
"name": "dzdt2017_K_RES_PY",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/dzdt2017_K_RES_PY.json"
},
{
"name": "dzdt2017_K_VEG_PY",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/dzdt2017_K_VEG_PY.json"
},
{
"name": "dzdt2017_PLNPT441721",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/dzdt2017_PLNPT441721.json"
},
{
"name": "tdly_xzsj2014_DLTB_ZW2_V2014",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/tdly_xzsj2014_DLTB_ZW2_V2014.json"
},
{
"name": "tdly_ztgh2014_JBNT_ZW2_V2014",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/tdly_ztgh2014_JBNT_ZW2_V2014.json"
},
{
"name": "tdly_ztgh2014_JSYDGZQ_ZW2_V2014",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/tdly_ztgh2014_JSYDGZQ_ZW2_V2014.json"
},
{
"name": "tdly_ztgh2014_QMDLTB_ZW2_V2014",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/tdly_ztgh2014_QMDLTB_ZW2_V2014.json"
},
{
"name": "tdly_ztgh2014_TDYT_ZW2_V2014",
"href": "http://172.16.20.58:8080/geoserver/rest/workspaces/zrzy/datastores/zrzy_gis/featuretypes/tdly_ztgh2014_TDYT_ZW2_V2014.json"
}
]
}
}
3.分析JSON数据。对象=>对象=>数组=>对象 最好的转换方式就是
HashMap<String,HashMap<String,List<Map<String,String>>>>
4.转换
JSONObject jsonObject = JSONObject.parseObject(json);
Map map = JSON.parseObject(String.valueOf(jsonObject), Map.class);
debug看到:里面还是JOSNObject对象。所以如果要转成Map的子类,是会报类型转换异常的。
5.拿出最后一层数组,debug看出JOSN.parseArray()这个方法返回的是ArrayList类型。里面的数据可以任意转换。(没有找到返回类型是HashMap类型的方法)
二、json数据转实体对象(不管JSON数据有多少层都可以使用,只需要构建相对应的实体对象就可以转换。如果数据全部都要的话非常适合)
1.实体结构可以根据自己的JOSN结构去构建
package com.job.xx;
import java.io.Serializable;
import java.util.List;
public class FeatureTypes implements Serializable {
private List<FeatureType> featureType;
public List<FeatureType> getFeatureType() {
return featureType;
}
public void setFeatureType(List<FeatureType> featureType) {
this.featureType = featureType;
}
@Override
public String toString() {
return "FeatureTypes{" +
"featureType=" + featureType +
'}';
}
}
class FeatureType implements Serializable {
private String name;
private String href;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
@Override
public String toString() {
return "FeatureType{" +
"name='" + name + '\'' +
", href='" + href + '\'' +
'}';
}
}
2.转换成实体对象。JOSNObject的getObject()方法,可以把json数据转换成对象数据。
JSONObject jsonObject = JSONObject.parseObject(json);
FeatureTypes featureTypes = jsonObject.getObject("featureTypes", FeatureTypes.class);