序
JSON是JavaScript对象符号的缩写,是一种轻量级的数据交换形式,也是XML的替代。JSON比XML更小、更快、更容易解析。由于JSON在描述对象时使用了JavaScript语法,所以它独立于语言和平台,近年来开发了很多JSON解析器和类库。
JSON有以下几种形式:
对象是“名称/值对”的无序集合。对象以“{”(左括号)开头,以“}”(右括号)结尾。每个“名称”后面跟着一个“:”(冒号);“名称/值对”由“,”(逗号)分隔。
有序的值列表。在大多数语言中,它被实现为数组、向量、列表和序列。
这些是常见的数据结构。目前,大多数编程语言都以某种形式支持它们。这使得在各种编程语言之间以相同的格式交换数据成为可能。
为了从其他服务器的URL中获取数据,我们通常传输json数据。例如,服务器B应该从服务器A的URL中获取分页信息,如果json字符可以方便快捷地操作,就应该转换成自己的java对象。
这里我尝试了三个第三方转换json,一个是谷歌的gson,好像转换不成功,总是报告json格式错误,但是验证总是正确通过,尝试失败。第二个是net.sf.json,这意味着不会报告错误,但对象的值始终为空。只有json-simple可以成功转换对象
解析json
首先,我们需要解析json,看看json是否是标准的json格式。我们可以在网上看到很多在线格式的json。将json解析成对象通常会改变它的形式。
第一个:是知道json结构。这里我启动服务器A,从他的url中获取一串json数据。
通过在格式化工具中抛出复制的json数据,可以清楚地看到结构:
{ ' event list ' :[{ ' id ' : 1030,' event id ' : ' 1508779115818499700 ',' createTime': 1508779115000,' endTime': 1508865480000,' eventContent': '123 ',' Openid ' : ' o4ewz 06 x
import com . yhn . consumer . entity . event;导入lombok。数据;import org . JSON . simple . JSON object;导入Java . io . serializable;导入Java . util . list;@Datapublic类EventVO实现Serializable { private list event list;私有字符串页面;私有字符串大小;私有字符串isHasPagepublic event VO (JSON对象对象){//constructor方法为对象分配一个event list=(list event)object . get(' event list ');page=(String)object . get(' page ');size=(String)object . get(' size ');isHasPage=(String)object . get(' isHasPage ');}}因为是嵌入式结构,下面是私有ListEvent eventList中的Event类;
导入朗博克岛.数据;导入组织。冬眠。注释。dynamicupdate导入javax。坚持。实体;导入javax。坚持。生成值;导入javax。坚持。id;导入Java。io。可序列化;导入Java。乌提尔。日期;@实体@数据@动态日期//自动更新时间字段公共类事件实现了可序列化的{ //这是事件里目录中的事件@Id @GeneratedValue私有整数id;//排序作用私有字符串事件标识;//事件编号私有日期创建时间;//创建时间私人日期结束时间;//更新时间私有字符串事件内容;//提醒事件内容私有字符串openid//用户id}测试类
接下来结构也写好了,将在服务器B写单元测试看看是否能够成功赋值
@Test public void clientDemo()引发异常{ StringBuilder JSON=new StringBuilder();URL urlObject=新URL(' http://127。0 .0 .1/会议设计/测试/服务器?OpenID=o4ewz 06 xzhw 6 mc2g mzmyveddx1zkpage=2 size=5’;//指定URl Httpurl connection UC=(Httpurl connection)URl对象.openConnection();//开启连接buffere reader in=new buffere reader(new InputStreamReader(UC。getinputstream(),' utf-8 ');字符串inputLine=null while((inputLine=in . readline())!=null){ JSON。追加(InputLine);//拼接JSON } in。close();加州大学。disconnect();系统。出去。println(JSON);//查看是否拿到。 //去除可能含编码UTF-8等,因为可能含有月初(月初的缩写)头文件字符串结果=格式化字符串(JSON。ToString());JSONParser解析器=new JSONParser();组织。JSON。很简单。JSON对象数据=新组织。JSON。很简单。JSON对象();数据=(组织。JSON。很简单。JSON对象)解析器。解析(结果);EventVO eventVO=新的EventVO(数据);//把值传进去log.info('eventVO={} ',EventVo);} /** * 去除月初(月初的缩写)报头*/public静态字符串格式字符串{如果!=null) { s=s.replaceAll('ufeff ',' ');}返回s;}测试结果
是成给对象赋值了
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。