java怎么解析[开头的json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么解析[开头的json相关的知识,希望对你有一定的参考价值。

怎么用java解析
["Title":"济南天气预报","Description":"","PicUrl":"","Url":"","Title":"周一(今天, 实时:21℃)\n阴转多云 南风微风 22 ~ 14℃","Description":"","PicUrl":"http://api.map.baidu.com/images/weather/day/yin.png","Url":"","Title":"周二\n晴 南风3-4级 24 ~ 14℃","Description":"","PicUrl":"http://api.map.baidu.com/images/weather/day/qing.png","Url":"","Title":"周三\n晴转阴 南风3-4级 24 ~ 11℃","Description":"","PicUrl":"http://api.map.baidu.com/images/weather/day/qing.png","Url":"","Title":"周四\n多云转晴 北风3-4级 19 ~ 7℃","Description":"","PicUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","Url":""]

网上找一下json-lib-2.2.3-xxx.jar,还有一些依赖包
有JSONArray类型的变量,也就是JSON数组,可以把这个字符串转换成json数组
String str=“XXXXXXXX”;
JSONArray oArray=new JSONArray(str);
然后通过这个json数组就可以获得各个部分了
参考技术A 一个当成一个对象,一个里面的“”:“”当成一个属性的key-value对。然后在java中这样写:
java中用jsonStr接收json类型的对象字符串
Gson gson = new Gson();
List<Map<Strring,String>> JsonList = gson.fromJson(jsonStr,Object.class);
这里一个Map就相当于[]中的一个;
然后你循环遍历List,和从Map中取值就可以了!
参考技术B 他有专门的json Jar包的。具体你可以看看json官网。www.json.org本回答被提问者采纳

java怎么使用gson解析json字符串

Gson是谷歌推出的解析json数据以及将对象转换成json数据的一个开源框架. 现在json因其易读性和高效率而被广泛的使用着. 

相对于java以及其它json的解析框架,Gson非常的好用.

简单来讲就是根据json的数据结构定义出相应的javabean --->"new"出Gson的实例gson---->gson.fromJson(jsonString,JavaBean.class) 即可.

下面给出一个实例来说明.



步骤1:目标:将从webservice传回的json




    "status": 0,
    "result": 
        "location": 
            "lng": 103.98964143811,
            "lat": 30.586643130352
        ,
        "formatted_address": "四川省成都市双流县北一街154",
        "business": "簇桥,金花桥",
        "addressComponent": 
            "city": "成都市",
            "district": "双流县",
            "province": "四川省",
            "street": "北一街",
            "street_number": "154"
        ,
        "cityCode": 75
    


先普及下json数据格式定义: json数据只有两种格式.

一种是对象: 一个大括号包裹的内容就是一个对象.里面是无数个逗号相间隔的键值对

 "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" 

一种是数组:一个方括号包裹的内容就是一个数组,里面是无数个逗号相间隔的json对象

如:


    "people": [
        
            "firstName": "Brett",
            "lastName": "McLaughlin",
            "email": "aaaa"
        ,
        
            "firstName": "Jason",
            "lastName": "Hunter",
            "email": "bbbb"
        ,
        
            "firstName": "Elliotte",
            "lastName": "Harold",
            "email": "cccc"
        
    ]



步骤2 定义json数据格式对应的javaBean


public class Result 
private Integerstatus;
private ResultDetailresult;
public Result() 

public Result(Integer status, ResultDetail result) 
super();
this.status = status;
this.result = result;

public ResultDetail getResult() 
return this.result;

public Integer getStatus() 
return this.status;

public void setResult( ResultDetail result ) 
this.result = result;

public void setStatus( Integer status ) 
this.status = status;

@Override
public String toString() 
return "Result [status=" + this.status + ", result=" + this.result
+ "]";


public class ResultDetail 
Locationlocation;
Stringformatted_address;
AddressComponentaddressComponent;
Stringbusiness;
StringcityCode;
public ResultDetail() 
super();
// TODO Auto-generated constructor stub

public ResultDetail(Location location, String formatted_address,
AddressComponent addressComponent, String business, String cityCode) 
super();
this.location = location;
this.formatted_address = formatted_address;
this.addressComponent = addressComponent;
this.business = business;
this.cityCode = cityCode;

public AddressComponent getAddressComponent() 
return this.addressComponent;

public String getBusiness() 
return this.business;

public String getCityCode() 
return this.cityCode;

public String getFormatted_address() 
return this.formatted_address;

public Location getLocation() 
return this.location;

public void setAddressComponent( AddressComponent addressComponent ) 
this.addressComponent = addressComponent;

public void setBusiness( String business ) 
this.business = business;

public void setCityCode( String cityCode ) 
this.cityCode = cityCode;

public void setFormatted_address( String formatted_address ) 
this.formatted_address = formatted_address;

public void setLocation( Location location ) 
this.location = location;


public class Location 
Stringlng;
Stringlat;
public Location() 

public Location(String lng, String lat) 
this.lng = lng;
this.lat = lat;

public String getLat() 
return this.lat;

public String getLng() 
return this.lng;

public void setLat( String lat ) 
this.lat = lat;

public void setLng( String lng ) 
this.lng = lng;

@Override
public String toString() 
return "Location [lng=" + this.lng + ", lat=" + this.lat + "]";


public class AddressComponent 
Stringcity;
Stringdistrict;
Stringprovince;
Stringstreet;
Stringstreet_number;
public AddressComponent() 
super();
// TODO Auto-generated constructor stub

public AddressComponent(String city, String district, String province,
String street, String street_number) 
super();
this.city = city;
this.district = district;
this.province = province;
this.street = street;
this.street_number = street_number;

public String getCity() 
return this.city;

public String getDistrict() 
return this.district;

public String getProvince() 
return this.province;

public String getStreet() 
return this.street;

public String getStreet_number() 
return this.street_number;

public void setCity( String city ) 
this.city = city;

public void setDistrict( String district ) 
this.district = district;

public void setProvince( String province ) 
this.province = province;

public void setStreet( String street ) 
this.street = street;

public void setStreet_number( String street_number ) 
this.street_number = street_number;

@Override
public String toString() 
return "AddressComponent [city=" + this.city + ", district="
+ this.district + ", province=" + this.province + ", street="
+ this.street + ", street_number=" + this.street_number + "]";



测试:

jsonString ( 目标json数据,已经在最上面写好的)


System.out.println( "jsonString:" + jsonString );
Gson gson = new Gson();
Result fromJson = gson.fromJson( jsonString.toString() ,Result.class );
System.out.println( "******************************************" );
System.out.println( fromJson );


结果:

jsonString:"status":0,"result":"location":"lng":103.98964143811,"lat":30.586643130352,"formatted_address":"四川省成都市双流县北一街154","business":"簇桥,金花桥","addressComponent":"city":"成都市","district":"双流县","province":"四川省","street":"北一街","street_number":"154","cityCode":75
*******************************************
Result [status=0, result=ResultDetail [location=Location [lng=103.98964143811, lat=30.586643130352], formatted_address=四川省成都市双流县北一街154, addressComponent=AddressComponent [city=成都市, district=双流县, province=四川省, street=北一街, street_number=154], business=簇桥,金花桥, cityCode=75]]


可见,jsonString已经成功的被转换成了对应的javaBean



步骤3 : 总结.说明


Gson可以很轻松的实现javaBean和jsonString之间的互转.只需要明白json如何定义.剩下的就非常简单了. 

参考技术A 步骤1:目标:将从webservice传回的json

1

"status": 0,
"result":
"location":
"lng": 103.98964143811,
"lat": 30.586643130352
,
"formatted_address": "四川省成都市双流县北一街154",
"business": "簇桥,金花桥",
"addressComponent":
"city": "成都市",
"district": "双流县",
"province": "四川省",
"street": "北一街",
"street_number": "154"
,
"cityCode": 75


2
先普及下json数据格式定义: json数据只有两种格式.
一种是对象: 一个大括号包裹的内容就是一个对象.里面是无数个逗号相间隔的键值对
"firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa"
一种是数组:一个方括号包裹的内容就是一个数组,里面是无数个逗号相间隔的json对象
如:

"people": [

"firstName": "Brett",
"lastName": "McLaughlin",
"email": "aaaa"
,

"firstName": "Jason",
"lastName": "Hunter",
"email": "bbbb"
,

"firstName": "Elliotte",
"lastName": "Harold",
"email": "cccc"

]

END
步骤2 定义json数据格式对应的javaBean

public class Result
private Integer status;
private ResultDetail result;

public Result()


public Result(Integer status, ResultDetail result)
super();
this.status = status;
this.result = result;


public ResultDetail getResult()
return this.result;


public Integer getStatus()
return this.status;


public void setResult( ResultDetail result )
this.result = result;


public void setStatus( Integer status )
this.status = status;


@Override
public String toString()
return "Result [status=" + this.status + ", result=" + this.result
+ "]";


参考技术B 去官网下载jar包,调用方法。

以上是关于java怎么解析[开头的json的主要内容,如果未能解决你的问题,请参考以下文章

objective-c json 解析器:如何解析以字符串而不是括号开头的 json 文件?

get_json_object() - 在 Impala 中解析 json 字符串 - 无法解析以数字开头的键

使用Qt5解析以括号`[`开头的JSON

解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

比较流行 java xml解析器有几种 名子是啥?