zoukankan      html  css  js  c++  java
  • 数据交换格式Json与XML

    什么是数据交换格式:

    主流的有JsonXMLHTML

    数据交换格式的应用场景:

    移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格。

    很多互联网公司都是用Http协议+Json格式。

    因为XML比较重WebService服务采用Http协议+XML格式的银行项目使用比较多。

    什么是Json数据交换格式:

    Json:相对于XML来说是一种轻量级数据交换格式。因为XML比较复杂,需要大量代码,所以客户端和服务器端数据交换通常使用Json来交换。

    XML:是一种重量级的数据交换格式(标记语言)。

    Json的基本语法:

    {

    "id": "小马",

    "name": "",

    "itemts": [{

    "ids": "小米",

    "name": "没峨眉"

    }, {

    "id": "29",

    "sex": ""

    }]

    }

    Java操作Json有哪些框架?

    Gson(谷歌)fastjson(阿里巴巴)----主流,jacksonSpringmvc

    第一种是直接使用Json中的方法进行解析:

    首先新建一个maven工程,导入fastjson包。

    <dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.47</version>

    </dependency>

    新建一个TestDemo

    public class TestDemo {

    static String json="{"id": "小马","name": "男","itemts": [{"id": "小米","name": "没峨眉"}, {"id": "29","name": "女"}]}";

    public static void main(String[] args) {

    JSONObject jsonObject=new JSONObject().parseObject(json);

    String id=jsonObject.getString("id");

    String name=jsonObject.getString("name");

    System.out.println(id+","+name);

    JSONArray array=jsonObject.getJSONArray("itemts");

    for(int i=0;i<array.size();i++) {

    JSONObject object=array.getJSONObject(i);

    String ids=object.getString("ids");

    String names=object.getString("name");

    System.out.println(ids+","+names);

    }

    }

    }

    以上这种方式太过麻烦,很少公司使用,一般使用对象封装好之后,直接拿来用。

    首先新建一个User类。注意:User类里面的属性与Json中的对象一致

    public class User {

    private String id;

    private String name;

    private List<Itemts> itemts;

    }

    加上getsettoString方法

    再新建一个Itemts类:

    public class Itemts {

    private String id;

    private String name;

    }

    也是加上getsettoString方法。

    新建一个测试类

    public class TestDemo {

    static String json="{"id": "小马","name": "男","itemts": [{"id": "小米","name": "没峨眉"}, {"id": "29","name": "女"}]}";

    public static void main(String[] args) {

    //使用对象的方式解析json,使用的方便,广泛。

    User user=new JSONObject().parseObject(json, User.class);

    System.out.println(user.toString());

    }

    }

    第二种是使用类的方式封装json,还是使用以上的UserItemts类。

    public class TestDemo2 {

    public static void main(String[] args) {

    JSONObject root=new JSONObject();

    root.put("id","10");

    root.put("name", "小米");

    JSONArray array=new JSONArray();

    JSONObject object1=new JSONObject();

    object1.put("itemts", "29");

    object1.put("itemtsName", "小马");

    JSONObject object2=new JSONObject();

    object2.put("itemts", "38");

    object2.put("itemtsName", "小红");

    //把对象放进数组里面

    array.add(object1);

    array.add(object2);

    //把数组放进对象里面

    root.put("itemt", array);

    System.out.println(root.toString());

    }}

    还有另一种实体类封装Json字符串

    public class TestDemo2 {

    public static void main(String[] args) {

    //使用实体类封装json字符串

    User user=new User();

    user.setId("29");

    user.setName("小马");

    List<Itemts> list=new ArrayList<Itemts>();

    Itemts itemts1=new Itemts();

    itemts1.setId("28");

    itemts1.setName("小红");

    Itemts itemts2=new Itemts();

    itemts2.setId("34");

    itemts2.setName("小和");

    list.add(itemts1);

    list.add(itemts2);

    user.setItemts(list);

    System.out.println(user.toString());

    }

    }

    Json到此就告一段落。

    XML解析方式:

    什么是XML

    XML全程是:可扩展的标记语言,主要用于描述数据和用作配置文件。

    XML声明:指明所用XML的版本,文档的编码,文档的独立性信息。

    文档类型声明:指出XML文档所用的DTD

    元素:有开始标签,元素内容和结束标签构成。

    注释:以结束,用于对文档中的内容起到一个解释的作用。

    处理指令:通过处理指令来通知其他应用程序来处理非XML格式的数据,格式为XML文档的根元素被称为文档元素,它和在其外部出现的处理指令,注释等作为文档实体字节点,根元素本身与其内部的子元素也是一棵树。

    XML样例:

    <?xml version="1.0" encoding="UTF-8"?>  

    <students>  

        <student1 id="001">  

            <property>houe ary you</property>

        </student1>  

        <student2 id="002">  

           <property>houe ary you2</property>

        </student2>  

    </students>  

    XML解析方式?

    Dom4jSaxPull三种常用的。

    Dom4jSax区别

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

    使用Dom4j解析xml代码:

    首先添加dom4jjar

    <dependency>

        <groupId>org.dom4j</groupId>

        <artifactId>dom4j</artifactId>

        <version>2.1.1</version>

    </dependency>

    Java代码

    public class TestXML {

    public static void main(String[] args) throws DocumentException {

    SAXReader reader=new SAXReader();

    //读取文件目录

    Document read = reader.read("E:\student.xml");

    //得到文件根节点

    Element rootElement = read.getRootElement();

    getNods(rootElement);

    }

    static void getNods(Element rootElement) {

    //得到根节点名称

    String name = rootElement.getName();

    System.out.println("根节点名称"+name);

    //把子节点放进List集合里

    List<org.dom4j.Attribute> attributes = rootElement.attributes();

    for (org.dom4j.Attribute attribute : attributes) {

    System.out.println("节点名称"+attribute.getName()+"节点属性"+attribute.getValue());

    }

    String value=rootElement.getTextTrim().trim();

    if(!value.equals("")) {

    System.out.println("节点的值是"+value);

    }

    //使用迭代器遍历子节点

    Iterator<Element> elementIterator = rootElement.elementIterator();

    while(elementIterator.hasNext()) {

    Element next = (Element) elementIterator.next();

    getNods(next);

    }

    }

    }

    结果是

    解决问题= 态度(珍惜,无我(找不到我),空船) +归因(并不是所有的问题都需要解决,并不是所有问题都需要现在解决,并不是所有的问题都需要自己解决) +解决方法 (金字塔原理 (背景,结论,阐述支撑观点,对于观点(背景,结论,观点。。。)二叉树) +系统循环方法)
  • 相关阅读:
    Setting the Scope of COM Objects in ASP Pages
    不注册调用ActiveX Dll
    完成端口>TransmitFile 和 TransmitPackets (收集)
    浅谈网络游戏《天龙X部》的文件加密格式
    防止被偷窥和修改 Office文档保护秘笈
    oracle日期时间函数大全
    (C#)Windows Shell 外壳编程系列5 获取图标
    在Delphi中关于UDP协议的实现
    《黑手党2》全部50本花花公子杂志收集攻略
    TThread —— 线程类详解
  • 原文地址:https://www.cnblogs.com/InterfaceAOP/p/10454569.html
Copyright © 2011-2022 走看看