json数据解析,json数据转为java对象
在Android开发过程中,经常需要与后台进行数据的交互,JSON作为一种轻量级的数据格式,经常被
后台作为传输数据的格式,将数据传输到客户端。JSON有两种格式,一种是对象格式的,另一种是数组格式的。
下面是一组json字符串:
String json="{"resultcode":"200","reason":"Return Successd!","result":{"province":"北京","city":"","areacode":"010",
"zip":"100000","company":"联通","card":""},"error_code":0}"
1.我们按json原生解析的方法一步一步进行解析:
JSONObject jsonObject = new JSONObject(json);JSONObject object = jsonObject.getJSONObject("result");String province=object.getString("province");String city=object.getString("city");String areacode=object.getString("areacode");
2.将json转换为java对象:首先根据json写出对应的实体类:
public class Root<T> {private String resultcode;private String reason;private T result;private int error_code;public void setResultcode(String resultcode){this.resultcode = resultcode;
}public String getResultcode(){
return this.resultcode;
}
public void setReason(String reason){
this.reason = reason;
}
public String getReason(){
return this.reason;}
public void setResult(T result){
this.result = result;}
public T getResult(){
return this.result;
}
public void setError_code(int error_code){
this.error_code = error_code;
}
public int getError_code(){
return this.error_code;
}
}
public class result {private String province;private String city;private String areacode;private String zip;private String company;private String card;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getZip() {return zip;}public void setZip(String zip) {this.zip = zip;}public String getAreacode() {return areacode;}public void setAreacode(String areacode) {this.areacode = areacode;}public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public String getCard() {return card;}public void setCard(String card) {this.card = card;}
}
转换:
JSONObject jsonObject=JSONObject.fromObject(json);
Root root=(Root)JSONObject.toBean(jsonObject, Root.class);
使用FastJson进行转换:
Root<JSON> root=JSONObject.parseObject(json,Root.class);Result result =JSONObject.toJavaObject(root.getResult(),Result.class);
使用GSON进行转换:对于有泛型引入的,需要多写一句话用于获取泛型信息。
Gson gson=new Gson();Type userType = new TypeToken<Root<Result>>(){}.getType();//用于获取泛型信息Root<Result> root=gson.fromJson(json, userType);Result result=root.getResult();
然后,下面一段json字符串中有数组内容:
String json="{"resultcode":"200","reason":"Return Successd!","result":[{"province":"北京","city":"","areacode":"010",
"zip":"100000","company":"联通","card":""},{"province":"北京","city":"","areacode":"010",
"zip":"100000","company":"联通","card":""}],"error_code":0}"
使用GSON进行转换:
Gson gson=new Gson();Type userType = new TypeToken<Root<List<Result>>>(){}.getType();Root<List<Result>> root=gson.fromJson(json, userType);List<Result> result=root.getResult();
使用FastJson进行转换:
Root<JSON> root=JSONObject.parseObject(json,Root.class);List<Result> result =JSONObject.parseArray(root.getResult().toJSONString(),Result.class);
将json数组转换为list对象:
String str="[{"name":"真实服务器","ip":"101.37.168.121","port":5672,"username":"shanghu","password":"GY5P20u1ix9vK8DI","isdemo":false},{"name":"模拟服务器","ip":"101.37.34.221","port":5672,"username":"shanghu","password":"GY5P20u1ix9vK8DI","isdemo":true}]";
使用GSON进行转换:
Gson gson=new Gson();Service[] array = gson.fromJson(str, Service[].class);List<Service> service=Arrays.asList(array);
使用FastJson进行转换:
List<Service> service=JSONArray.parseArray(str, Service.class);
json数据解析,json数据转为java对象相关推荐
- Jackson json转为java对象时遇到不规范的命名规则处理
今天Android开发的同事问我他在调用服务端接口返回的json数据时,发现对方的json字符串中有没按照驼峰命名的key,结果导致他在用jackson转为java对象的时候,获取不到该key的值,下 ...
- python中json模块_Python使用内置json模块解析json格式数据的方法
本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...
- cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言
一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...
- Spring拦截器获取request请求体中的json数据,并转换成Java对象的解决办法
1.要被拦截的Controller接口 我们需要一个更新用户信息接口,请求方式为POST,参数类型为对象类型(UserInfo),代码如下: @Resource private UserService ...
- json数据解析(json数据解析 前端)
JAVA为什么要返回JSON数据?JAVA为什么要返回JSON数? print( String()); 这样在前台页面就可以通过eval(data.List)获取到. 输出 String()就可以看到 ...
- android的json数据解析,Android数据解析-JSON解析
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- linux下json数据解析,JSON数据解析 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
在之前的<iOS学习--xml数据解析(九)>http://www.linuxidc.com/Linux/2014-02/97020p9.htm 介绍了xml数据解析,这一篇简单介绍一下J ...
- JSON.parseObject 解析JSON格式数据
fastjson是阿里巴巴开源产品之一,解析速度快. 下载地址(maven仓库):https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2 ...
- Jso对象转化Java对象_Nutz.Json 转为Java对象
Json字符串转Java对象, 分成几种情况 从目标对象的类型看: 无Pojo类对应 Json.fromJson(source/*来源参数*/) 有Pojo类对应 Json.fromJson(Clas ...
最新文章
- 一个有效的OKR是什么样?
- BUUCTF-WEB:[强网杯 2019]随便注 1
- python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用
- 音频降噪处理+java_适当的音频捕获和降噪
- SAP UI5 Repository and MongoDB Repository
- 鼠标手势识别 [Flash]
- MKNetwork网络请求过程中onCompletion调用两次的问题
- Ember.js 入门指南——路由重定向
- 安阳学院有几次计算机考试,安阳:2017年上半年全国计算机等级考试顺利结束...
- Tensorflow2下载与安装
- VC2005用不惯呀....
- 如何收割暑期实习offer
- 数据结构与算法分析——第五章、第六章
- 服务器系统没法设置分辨率,windows系统分辨率改不了的原因分析及多种解决方法...
- Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合
- Apk 拆包替换文件
- CodeForces入门
- 服务器遇到一个意外的情况,阻止它完成请求
- macbook 备份系统
- SCI论文参考文献介绍