15.java json解析
json解析,json:一种数据格式:{名值对,名值名}--》一个json对象:JSONObject-->java的一个对象/map[{},{},{}]-->一组json对象:JSONArray--->List:java的对象 ,List<map>3种解析方式:1.原生:new JSONObject(json)-->javanew JSONArray(json)-->遍历:获取每一个JSONObject,-->java2.Gson:gson.fromJson(json,Class)--》{}gson.fromJson(json,TypteToken(){}.getType())--->[] ,List<>3.fast-json:JSON.parseObject(json,Class);JSON.parseArray(json,Class);作业:本堂课笔记:xml:eXtended Markup Language<font size = 5 face = "华文彩云">女生说:大海啊目前,男生说:大海啊丈母娘</font>xml的语法:1.标签是成对出现的。有开始标签,结束标签。单标签除外2.区分大小写。3.标签中嵌套标签<tag1><tag2></tag2></tag1>Pull 以事件常量的方法进行解析。事件的类型,手动获取。解析原理:当开始解析一个xml文件的时候,扫描器,向后逐渐扫描。遇到响应的内容,触发响应的事件。手动获取下次的事件类型5个事件:对应的常量(数值)开始解析文档事件:START_DOCUMENT:0结束解析文档事件:END_DOCUMENT:1开始解析标签事件:STATT_TAG:2结束解析标签事先:END_TAG:3文本事件:(无标签名)TEXT:4nextText()获取该标签后的文本内容,并且跳过响应的结束标签。Sax:以事件通知的方法进行解析。用方法借助:Handler5个事件:对应的5个方法开始解析文档事件:void startDocument() 相应操作:创建集合结束解析文档事件: void endDocument() 无操作开始解析标签事件:void startElement(String uri, String localName, String qName, Attributes attributes) 相应操作:1.将qName扩为成员变量--->tagName2.判断qName的值为:user,创建对象结束解析标签事件:void endElement(String uri, String localName, String qName) 相应操作:1.将tagName的值清空2.判断qName的值:user,加入集合文本事件:void characters(char[] ch, int start, int length) 相应操作:1.获取文本内容:content = new String(ch,start,length);2.根据tagName的值,将content赋值个相应的属性。总结xml的解析方式方法一:PULL解析(拉取):特点,是手动的拉取下次的解析事件。(可以停止)原理:基于事件,对应的常量。解析器对象,开始解析文档,遇到相应的事件,得到常量数值,判断该常量,响应的处理。开始文档:START_DOCUMENT:0结束文档:END_DOCUMENT:1开始标签:START_TAG:2结束标签:END_TAG:3文本标签:TEXT:4操作步骤:step1:创建javabean类step2:获取解析器的工厂XMLPullParserFactory factory = XMLPullParserFactory.newInstance();step3:从工厂对象中获取解析器对象XMLPullParser parser = factory.newPullParser();step4:为解析器对象,设置要解析的文件:InputStream,encoding/Readerstep5:解析A:获取首次的事件类型B:大大的循环while(eventType!=结束文档){C:获取标签名D:switch(事件类型){case 开始标签users:创建集合user:创建对象,可能获取属性name:nextText()case 结束标签user:将对象-->集合中,对象置空}E:手动获取下次的事件类型eventType = parser.next();}常用方法:getEventType();//首次获取解析器处理的事件nextText();//获取该标签后的文本内容,同时跳过对应的结束标签next();//获取下次的事件类型SAX解析:基于事件通知(自动调用回调方法,某一个事件发生的时候,回调方法自动执行)开始文档:startDocument()--->创建集合结束文档:endDocument()--->开始标签:startElement()--->tagName = qName;user,创建对象结束标签:endElement()--->tagName ="",user,对象存入集合文本标签:characters()--->获取文本内容,根据tagName的值,为对象的属性赋值xml和json
~~Gson~~~~~~~~~~~~~~~~~
Student s1 = gson.fromJson(json1, Student.class);
List<Student> list = gson.fromJson(json2,new TypeToken<List<Student>>() {}.getType());
~~fastjson~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
List<Student> list = JSON.parseArray(json2, Student.class);
Student stu = JSON.parseObject(json1, Student.class);
~~~~JSON~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JSONObject js = new JSONObject(json);
JSONArray jss = js.optJSONArray("info");