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);

    }

    }

    }

    结果是

    解决问题= 态度(珍惜,无我(找不到我),空船) +归因(并不是所有的问题都需要解决,并不是所有问题都需要现在解决,并不是所有的问题都需要自己解决) +解决方法 (金字塔原理 (背景,结论,阐述支撑观点,对于观点(背景,结论,观点。。。)二叉树) +系统循环方法)
  • 相关阅读:
    null in ABAP and nullpointer in Java
    SAP ABAP SM50事务码和Hybris Commerce的线程管理器
    Hybris service layer和SAP CRM WebClient UI架构的横向比较
    SAP ABAP和Linux系统里如何检查网络传输的数据量
    SAP CRM WebClient UI和Hybris的controller是如何被调用的
    SAP CRM和Cloud for Customer订单中的业务伙伴的自动决定机制
    SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
    SAP BSP和JSP页面里UI元素的ID生成逻辑
    微信jsapi支付
    微信jsapi退款操作
  • 原文地址:https://www.cnblogs.com/InterfaceAOP/p/10454569.html
Copyright © 2011-2022 走看看