json解析、封装--XML解析

json解析包(GSON谷歌、fastJson阿里、jacksonSpring内置)

移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。
很多互联网项目都采用Http协议+JSON
xml比较重WebService服务

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON的形式是用大括号“{}”包围起来的项目列表,每一个项目间用逗号(,)分隔,而项目就是用冒号(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。在JSON中,名称 / 值对包括字段名称(在双引号中),后面写一个冒号,然后是值

JSON有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

fastJSON–API


public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

json解析、封装

//封裝json


		User user=new User();
		user.setId(1);
		user.setName("明");
		List<Item> list=new ArrayList<Item>();
		Item item=new Item();
		item.setEmailAddress("[email protected]");
		item.setHomeAddress("成都");
		list.add(item);
		user.setItem(list);
		System.out.println("封裝json"+new JSONObject().toJSONString(user));
		//解析json
		String str="{\"id\":1,\"item\":[{\"emailAddress\":\"[email protected]\",\"homeAddress\":\"成都\"}],\"name\":\"明\"}";
		JSONObject jsonObject = new JSONObject();
		JSONObject parseObject = jsonObject.parseObject(str);
		Integer id = parseObject.getInteger("id");
		String name = parseObject.getString("name");
		JSONArray jsonArray = parseObject.getJSONArray("item");
		System.out.println(id+"===="+name);
		for(Object obj:jsonArray) {
			JSONObject obj2 =(JSONObject) obj;
			String emailAddress = obj2.getString("emailAddress");
			String homeAddress = obj2.getString("homeAddress");
			System.out.println(emailAddress+"----"+homeAddress);
		}

XML解析

什么是XML?
它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。
XML 文档在逻辑上主要由一下 5 个部分组成:
XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息
文档类型声明:指出 XML 文档所用的 DTD
元素:由开始标签、元素内容和结束标签构成
注释:以结束,用于对文档中的内容起一个说明作用
处理指令:通过处理指令来通知其他应用程序来处理非 XML 格式的数据,格式为
  XML 文档的根元素被称为文档元素,它和在其外部出现的处理指令、注释等作为文档实体的子节点,根元素本身和其内部的子元素也是一棵树。


@Test
public void testXML() throws IOException, DocumentException {
	SAXReader saxReader=new SAXReader();
	Document read = saxReader.read(new File("D:\\Eclipse\\WorkSpace\\mavendemo\\src\\main\\resources\\student.xml"));
	Element rootElement = read.getRootElement();
	gitNodes(rootElement);
}
private void gitNodes(Element rootElement) {
	System.out.println("节点名称"+rootElement.getName());
	@SuppressWarnings("unchecked")
	List<Attribute> attributes = rootElement.attributes();
	for(Attribute as:attributes){
		System.out.println("属性"+as.getName()+"---"+"属性值"+as.getText());
	}
	if(!rootElement.equals("")){
		System.out.println("标签属性"+rootElement.getName()+"---"+"标签内容"+rootElement.getText());
	}
	// 使用迭代器遍历
			Iterator<Element> elementIterator = rootElement.elementIterator();
			while (elementIterator.hasNext()) {
				Element next = elementIterator.next();
				gitNodes(next);
			}
}

XML解析方式?

Dom4j、Sax、Pull

Dom4j与Sax区别

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。

发布了26 篇原创文章 · 获赞 0 · 访问量 700

猜你喜欢

转载自blog.csdn.net/YHM_MM/article/details/103965414