Android 网络通信2

什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

客户端(浏览器端)与服务器端交互: xml ison

本质 就是具有特定格式的字符串

JSON数据 已经是客户端与服务器端交互的最常用的选择,已经很少使用xml来进行数据交互了

JSON数据解析
1)解析技术:
Android原生API :编程相对麻烦
Gson框架:编码简洁,项目首选
2)解析方向:
服务器端:将java对象(包含集合)转换为json格式字符串
客户端:将json格式字符串转换为java对象(包含集合)
JSON数据格式
整体结构:

String json1 ="{“id” : 12,“name”:“Tom”}";
String json2 ="[{“id” : 12,“name”: “Tom”}, {“id”: 12,“name”:“Tom”}]";
Json数组:[ ]>ArrayList
Json对象:{ }→>HashMap

Json数组的结构:

[value1, value2, value3]
Json对象的结构:

{key1:value1, key2:value2, key3:value3}
key的数据类型:

字符串
value的数据类型:

数值(包含整数和小数)
字符串
null
json数组 [ ] String jsonArr ="[value1,value2,value3,value4]";"[1,2,3]"
json对象{ } String jsonObject = “{key1:value1,key2:value2,key3:value3}”;
例子:
[1,“ab”,[],{“n”:123,“b”:“abc”}] [1, “a”:3]
{“name” :“TOM”, “age”:12} {“aa”:“a”,[3]}

相关API
Android原生APl:

JsonObject类: json对象{ }
JSONObject(String json):将json字符串解析为json对象
Xxx getXxx(String name):根据name,在json对象中得到对应的Value
JsonArray类: json数组[ ]
JSONArray(String json):将json字符串解析为json数组
int length():得到json数组中元素的个数
Xxx getXxx(int index):根据下标得到json数组中对应的元素数据
Gson框架API
Gson :能解析json数据的类
Gson():构造对象的方法
String toJson(Object src):将对象转换为对应格式的json字符串
T fromJson(String json, Type typeofT):解析Json字符串,得到对象
TypeToken :用来得到Type的类
protected TypeToken():受保存的构造方法
Type getType():得到类型对象
.解析
原生API JSONObject
JSONObject json=new JSONObject(str); String obj=json.getString(“weatherinfo”); JSONObject json2=new JSONObject(obj); System.out.println(json2.getString(“city”));
Gson
引入类库到工程:创建json对应的对象实体类
Gson gson=new Gson(); Weatherinfo w= gson.fromJson(str,Weatherinfo.class); //类型 //对象数组 //List list = gson.fromJson(str,new TypeToken (){}.getType());

Fastjson
List list =JSON.parseArray(str,Weatherinfo.class); for(Weatherinfo w:list){ System.out.println(“转换结果=”+w); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值