1、 什么是XML

EXtensible Markup Language 可扩展标记语言

特点

XML与操作系统、编程语言的开发平台无关

实现不同系统之间的数据交换

作用

数据交互

​ 配置应用程序和网站

Ajax的基石

  所有XML元素都必须有结束标签XML标签对大小写敏感XML元素都必须正确嵌套同级标签以缩进形式对齐元素名称可以包含字母、数字或其他的字符元素名称不能以数字或者标点符号开始元素名称中不能包含空格(不要包含连字符、减号)必须有且仅有一个根元素

2、 DTD文件

此段内同可以参考W3CSCHOOL

 <?xml version="1.0" encoding="UTF-8"?><!-- +可以有一个或多个,至少一个,?有一个或者没有最多一个,*随意 --><!DOCTYPE books[<!ElEMRNT books (book*)><!ElEMRNT book (author,title,description)><!ElEMRNT author (#PADATA)><!ElEMRNT title (#PADATA)><!ElEMRNT description (#PADATA)>]>​<books><!-- 图书信息 --><book id="bk01"><author>王珊</author><title>NET高级编程</title><description>包含C#框架和网络编程等</description></book><book id="kb102"><author>王珊2</author><title>NET高级编程2</title><description>包含C#框架和网络编程等2</description></book></books>

3、 使用DOM操作XML

3.1、 读取DOM文件内容

 //XML原文件<?xml version="1.0" encoding="UTF-8"?><PhoneInfo><Brand name="华为" id="001"><Type name="U8650"/><Type name="HW123"/><Type name="HW321"/></Brand><Brand name="苹果" id="002"><Type name="iPhone4"/></Brand></PhoneInfo>
 public static void main(String[] args)throws Exception{//DOM解析XML文件步骤//1.创建解析器工厂对象DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//2.解析器工厂对象创建解析器对象DocumentBuilder db=factory.newDocumentBulider();//3.解析器对象指定XML文件创建Document对象Documnet document=db.parse(new File("收藏信息.xml");//4.以Document对象为起点操作DOM树;NodeList brand=document.getElementsByTagName("Brand");System.out.println("收藏的品牌数为"+brand.getLength());for(int i=0;i<brand.getLength();i++){//获取节点的所有属性值NamedNodeMap attributes=brand.item(i).getAttributes();//通过属性的name获取属性的Node对象Node name=attributes.getNameItem("name");//通过属性Node都西昂的getNodeValue方法,获取他的值System.out.println(name.getNodeValue());NodeList childNodes=brand.item(i).getChildNodes();for(int j=0;j<childNode.getLength();j++){if(childNodes.item(j),getNodeType()==1){NamedNodeMap attributes1=childNodes.item(j).getAttributes();Node name1=attributes1.getNamedItem("name");System.out.println(name1.getNodeValue());//System.out.println("-----------");//或者,可以直接通过这样获取//System.out.println(((Elemnt)childNodes.item(j)).getAttributes("name"));//if({"123123".equals(name1.getNodeValue())){//如果想要获取元素中间的文本,则使用图下方法//System.out.println(((Element)childNodes.item(j)).getTextContent());//}}}}}

3.2、 写入新的xml文件

  package Day26;/*使用DOM复制一个文件*/import org.w3c.dom.Document;import org.xml.sax.SAXException;​import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import java.io.*;//dom读取(不用工具完整版)public class Test {public static void main(String[] args) {//获取TransFormerFactory工厂对象TransformerFactory factory=TransformerFactory.newInstance();//indent-number表示缩进位置factory.setAttribute("indent-number",4);try {//通过工厂对象,获得我们的Transformer对象Transformer transformer= factory.newTransformer();//1、创建解析器工厂对象DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();//2、解析器工厂对象创建解析器对象DocumentBuilder db=documentBuilderFactory.newDocumentBuilder();//3、解析器都西昂指定XML文件创建Document对象Document document=db.parse(new File("src/Day25/收藏信息.xml"));//设置我们将会输出的字符集transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");//制定了当输出结果数时,transformer是否可以添加额外的空白:其值必须为yes或no//yes会插入空白,no不会插入空白transformer.setOutputProperty(OutputKeys.INDENT,"yes");​//创建StreamResult对象//包含保存文件的信息FileOutputStream fos = new FileOutputStream("收藏信息02");OutputStreamWriter out=new OutputStreamWriter((fos));StreamResult result=new StreamResult(out);//需要写入的信息DOMSource source=new DOMSource(document);​try {transformer.transform(source,result);} catch (TransformerException e) {e.printStackTrace();}System.out.println("写入数据:");​} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (ParserConfigurationException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();}}}

3.3、 Util工具类

 import org.w3c.dom.Document;import org.w3c.dom.Node;import org.xml.sax.SAXException;​import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import java.io.*;​//dom工具public class DOMUtil {//获取Document对象//@param pathName路径//@return documentpublic static org.w3c.dom.Document getDocument(String pathName){//1、创建解析器工厂DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();//2、解析器工厂对象创建解析器对象DocumentBuilder db= null;try {db = documentBuilderFactory.newDocumentBuilder();} catch (ParserConfigurationException e) {e.printStackTrace();}//3、解析器对象指定XML文件创建Document对象try {return db.parse(new File(pathName));} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}​//写入文件的方法//@param document 我们需要写入的信息//@param pathname 目标路径public static void transform(Document document, String pathName){//获取TransFormerFactory工厂对象TransformerFactory factory=TransformerFactory.newInstance();//indent-number表示缩进位置factory.setAttribute("indent-number",4);//通过工厂对象,获得我们的Transformer对象Transformer transformer = null;try {transformer = factory.newTransformer();} catch (TransformerConfigurationException e) {e.printStackTrace();}//设置我们将会输出的字符集transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");//制定了当输出结果数时,transformer是否可以添加额外的空白:其值必须为yes或no//yes会插入空白,no不会插入空白transformer.setOutputProperty(OutputKeys.INDENT, "yes");//创建StreamResult对象//包含保存文件的信息StreamResult result = null;try {result = new StreamResult(new OutputStreamWriter(new FileOutputStream(pathName),"UTF-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}//需要写入的信息DOMSource source = new DOMSource((Node) document);​try {transformer.transform(source,result);} catch (TransformerException e) {e.printStackTrace();}System.out.println("写入数据:");}}

3.4、 新增节点(使用DOMUtil)

​import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;//dom复制public class Test02 {public static void main(String[] args) {try{Document document=DOMUtil.getDocument("src/Day25/收藏信息.xml");//以Document对象为起点操作DOM树NodeList phoneInfo=document.getElementsByTagName("PhoneInfo");//使用document对象获取Element对象Element brand=document.createElement("Brand");Element type1=document.createElement("Type");Element type2=document.createElement("Type");//将Element对象新增属性值brand.setAttribute("name","小米");brand.setAttribute("id","003");type1.setAttribute("name","红米");type2.setAttribute("name","黑米");//将新增的type放在brand的后面brand.appendChild(type1);brand.appendChild(type2);//将新增的brand放在phoneInfo第一个子元素下phoneInfo.item(0).appendChild(brand);​DOMUtil.transform(document,"收藏信息_复制.xml");} catch (Exception e) {e.printStackTrace();}}}

3.5、 修改节点(使用DOMUtil)

  import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;//dom修改public class Test03 {public static void main(String[] args) {try{Document document=DOMUtil.getDocument("src/Day25/收藏信息.xml");// 以Document对象为起点操作DOM树NodeList brand=document.getElementsByTagName("Brand");for(int i=0;i<brand.getLength();i++) {//获取节点的所有属性值NamedNodeMap attributes = brand.item(i).getAttributes();//通过属性值的name获取属性的Node对象Node name = attributes.getNamedItem("name");//通过属性Node对象的getNodeValue方法,获取他的值//System.out.println(name.getValue());//我们希望修修改苹果下的Type iPhone4->iphone5,所以,只有时苹果才操作if ("苹果".equals(name.getNodeValue())) {NodeList childNodes = brand.item(i).getChildNodes();//System.out.println("找到苹果了");for (int j = 0; j < childNodes.getLength(); j++) {if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {NamedNodeMap attributes1 = childNodes.item(j).getAttributes();Node name1 = attributes1.getNamedItem("name");//System.out.println(name1.getNodeValue());if ("iPhone4".equals(name1.getNodeValue())) {name1.setNodeValue("iPhone5");}}}}}DOMUtil.transform(document,"收藏信息_替换.xml");} catch (Exception e) {e.printStackTrace();}}}

3.6、 删除节点(使用DOMUtil)

  import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;//dom删除public class Test04 {public static void main(String[] args) {try{Document document=DOMUtil.getDocument("src/Day25/收藏信息.xml");// 以Document对象为起点操作DOM树NodeList brand=document.getElementsByTagName("Brand");for(int i=0;i<brand.getLength();i++) {//获取节点的所有属性值NamedNodeMap attributes = brand.item(i).getAttributes();//通过属性值的name获取属性的Node对象Node name = attributes.getNamedItem("name");//通过属性Node对象的getNodeValue方法,获取他的值//System.out.println(name.getValue());//我们希望删除苹果下的Type iPhone4,所以,只有时苹果才错做if ("苹果".equals(name.getNodeValue())) {NodeList childNodes = brand.item(i).getChildNodes();//System.out.println("找到苹果了");for (int j = 0; j < childNodes.getLength(); j++) {if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {NamedNodeMap attributes1 = childNodes.item(j).getAttributes();Node name1 = attributes1.getNamedItem("name");//System.out.println(name1.getNodeValue());if ("iPhone4".equals(name1.getNodeValue())) {System.out.println("执行删除");System.out.println(name1.getNodeValue());//我们要先获取当前的一个节点对象//这个节点对象,应该是我们的整体节点而不是某个属性//childNodes.item(j)->这时我们需要删除的<Type name="iPhone4"></Type>childNodes.item(j).getParentNode().removeChild(childNodes.item(j));}}}}}DOMUtil.transform(document,"收藏信息_删除.xml");} catch (Exception e) {e.printStackTrace();}}}

———————————————————————————————————————————————

使用DOM4J解析XML

1、 XLM解析的方式介绍

再日常开发种常见的XML解析方式有如下两种

1、DOM:要求解析器将整个XML文件全部加载到内存中,生成一个Document对象。

​ 优点:元素和元素之间保留结构、关系,可以针对元素进行增删查改操作

​ 缺点:如果XML文件过大,可能会导致内存溢出

2、SAX:是一种速度更快,更加高效的解析方式。他是逐行扫描。边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析一行都会触发一个事件。

​ 优点:不会出现内存溢出问题,可以处理大文件

​ 缺点:只能读,不能写

解析器:就是根据不同的解析方式提供具体的实现,为了方便开发人员来解析XML,有一些方便操作的类库

dom4j:比较简单的XML解析的类库

jsoup:功能强大的DOM方式解析的类库,尤其对HTML的解析更加方便

2、 使用dom4j解析xml

使用dom4j解析xml的步骤

1、创建解析器对象

2、使用解析器对象去读取XML文档生成Document对象

3、根据Document对象获取XML的元素(标签)信息

Dom4j重要API说明

org.dom4j.Document常用方法

  Element getRootElement();//获取XML文件的根节点

org.dom4j.Element常用方法

  String getName(); //返回标签的名称​Lsit<Element> elements();//获取标签的子标签​String attributeValue(String name);//获取指定属性名称的属性值​String getText();//获取标签的文本​String elementText(String text);//获取指定名称的子标签文本

案例:

  <?xml version="1.0" encoding="UTF-8"?><PhoneInfo><Brand name="华为" id="001"><Type name="U8650"/><Type name="HW123"/><Type name="HW321"/></Brand><Brand name="苹果" id="002"><Type name="iPhone4"/></Brand></PhoneInfo>
  package Day25;​import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;​import java.io.File;import java.util.List;​public class Dom4JTest {public static void main(String[] args) {//创建解析器对象SAXReader saxReader = new SAXReader();​try {Document document = saxReader.read(new File("src/Day25/收藏信息.xml"));Element rootElement = document.getRootElement();System.out.println("文件的根节点名字是:"+rootElement.getName());​//获取子标签List<Element> ClothingSizesSubElementList=rootElement.elements();for(Element sizeElement:ClothingSizesSubElementList){System.out.println("子标签的名字是:"+sizeElement.getName());System.out.println("子标签的name属性值是:"+ sizeElement.attributeValue("name"));System.out.println("子标签的id属性值是:"+ sizeElement.attributeValue("id"));​//获取根标签下的子标签【brand】的子标签List<Element> userSubElementList= (List<Element>) sizeElement.elements();for(Element userSubElement:userSubElementList){System.out.println("Brand之下子标签的名字是:"+userSubElement.getName());System.out.println("Brand之下子标签的名字是:"+userSubElement.attributeValue("name"));}​//获取PhoneInfo标签的一个brand标签Element firstBrandElement=rootElement.element("brand");//第一个brand标签的子标签id文本String id=firstBrandElement.elementText("id");System.out.println("第一个brand标签的子标签id的文本"+id);}} catch (DocumentException e) {e.printStackTrace();}}}

————————————————————————————————————————————

4、 使用DOM4J操作XLM

4.1、 读取数据

  import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;​import java.util.Iterator;//dom4j读public class Test05 {public static void main(String[] args) {//获取SAXReader对象SAXReader reader=new SAXReader();try{//通过这个对象,可以直接读取XML文件,获取需要的Document文件Document document= reader.read("src/Day25/收藏信息.xml");//首先获取到root路径(根路径)Element root=document.getRootElement();//使用root对象获取根路径的迭代器Iterator<Element> it= root.elementIterator();while(it.hasNext()){//通过迭代器,next()方法,获取每一个标签的内容Element brand= it.next();//System.out.println(next.getName());System.out.println(brand.attributeValue("name"));//通过对应的brand标签,获取其本身的迭代器Iterator<Element> brandIterator=brand.elementIterator();while(brandIterator.hasNext()){Element type=brandIterator.next();System.out.println(type.attributeValue("name"));}}} catch (DocumentException e) {e.printStackTrace();}}}

4.2、 写入数据

 import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;​import java.io.FileWriter;import java.io.IOException;//dom4j写入public class Test06 {public static void main(String[] args) {//获取SAXReader对象SAXReader reader = new SAXReader();try {//通过这个对象,可以直接读取XML文件,获取需要的Document文件Document document= reader.read("src/Day25/收藏信息.xml");//创建FileWriterFileWriter out = new FileWriter("收藏信息_写入.xml");document.write(out);out.close();System.out.println("打印成功");} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

4.3、 新增数据

  import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;​import java.io.FileWriter;import java.io.IOException;//dom4j新增public class Test07 {public static void main(String[] args) {//获取SAXReader对象SAXReader reader = new SAXReader();try {//通过这个对象,可以直接读取XML文件,获取需要的Document文件Document document = reader.read("src/Day25/收藏信息.xml");//首先获取到root路径(根路径)Element phoneInfo = document.getRootElement();//再PhoneInfo下增加新的元素Brand元素,并给Brand增加元素name="小米",id="003"Element brand = phoneInfo.addElement("Brand").addAttribute("name", "小米").addAttribute("id", "003");//给新增的元素Brand新增元素Type,并且新增属性name,红米brand.addElement("type").addElement("name", "红米");//给新增的元素Brand新增元素Type,并且新增属性name,黑米brand.addElement("typr").addElement("name", "黑米");​//创建FileWriter//FileWriter out = new FileWriter("收藏dom4j_新增.xml");//document.write(out);//out.flush();//out.close();//System.out.println("答应成功");//} catch (DocumentException e) {//    e.printStackTrace();//} catch (IOException e) {//    e.printStackTrace();//}​FileWriter fileWriter = new FileWriter("收藏信息_新增.xml");//如果你要方便阅读,可以选择好看的打法OutputFormat format = OutputFormat.createPrettyPrint();//如果这个XML时用于传输的,我们是要紧凑的打法//OutputFormat format=OutputFormat.createCompactFormat();XMLWriter writer = new XMLWriter(fileWriter, format);try {writer.write(document);writer.close();} catch (IOException e) {e.printStackTrace();}System.out.println("打印成功");} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

4.4、 删除数据

import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;​import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;​//dom4j删除public class Test08 {public static void main(String[] args) {//获取SAXReader对象SAXReader reader=new SAXReader();try {//通过这个对象,可以直接读取XML文件,获取需要的Document文件Document document = reader.read("src/Day25/收藏信息.xml");//首先获取到root路径(根路径)Element root = document.getRootElement();//使用root对象获取根路径的迭代器Iterator<Element> it = root.elementIterator();while (it.hasNext()) {//通过迭代器,next()方法,获取每一个标签的内容Element brand = it.next();//System.out.println(brand.attributeValue("name"));if ("苹果".equals(brand.attributeValue("name"))) {//通过对应的brand标签,获取其本身的迭代器Iterator<Element> brandIterator = brand.elementIterator();while (brandIterator.hasNext()) {Element type = brandIterator.next();//System.out.println(type.attributeValue("name"));if ("iPhone4".equals(type.attributeValue("name"))) {//System.out.println(type.attributeValue("name"));//通过tpe对象获取父节点,之后删除当前节点type.getParent().remove(type);}}}}FileWriter fileWriter = new FileWriter("收藏信息_删除.xml");//如果你要方便阅读,可以选择好看的打法OutputFormat format = OutputFormat.createPrettyPrint();//如果这个XML时用于传输的,我们是要紧凑的打法//OutputFormat format=OutputFormat.createCompactFormat();XMLWriter writer = new XMLWriter(fileWriter, format);try {writer.write(document);writer.close();} catch (IOException e) {e.printStackTrace();}System.out.println("打印成功");} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

4.5、 修改数据

 package Day26;​import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;​import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.List;​//dom4j修改public class Test09 {public static void main(String[] args) {//获取SAXReader对象SAXReader reader=new SAXReader();try {//通过这个对象,可以直接读取XML文件,获取需要的Document文件Document document = reader.read("src/Day25/收藏信息.xml");//首先获取到root路径(根路径)Element root = document.getRootElement();//使用root对象获取根路径的迭代器Iterator<Element> it= root.elementIterator();while(it.hasNext()) {//通过迭代器,next()方法,获取每一个标签的内容Element brand = it.next();//System.out.println(brand.attributeValue("name"));if ("苹果".equals(brand.attributeValue("name"))) {//通过对应的brand标签,获取其本身的迭代器Iterator<Element> brandIterator = brand.elementIterator();while (brandIterator.hasNext()) {Element type = brandIterator.next();//System.out.println(type.attributeValue("name"));//获取所有的属性List<Attribute> attributes = type.attributes();for (int i = 0; i < attributes.size(); i++) {//循环遍历属性直到找到iPhone4if ("iPhone4".equals(attributes.get(i).getValue())) {//修改当前的属性值,修改为iPhone18attributes.get(i).setValue("iPhone18");}}type.setAttributes(attributes);}}}FileWriter fileWriter = new FileWriter("收藏信息_修改.xml");//如果你要方便阅读,可以选择好看的打法OutputFormat format = OutputFormat.createPrettyPrint();//如果这个XML时用于传输的,我们是要紧凑的打法//OutputFormat format=OutputFormat.createCompactFormat();XMLWriter writer = new XMLWriter(fileWriter, format);try {writer.write(document);writer.close();} catch (IOException e) {e.printStackTrace();}System.out.println("打印成功");} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

5、 Json

5.1、 对象转化为JSON

List list=new ArrayList<String>();list.add("A");list.add("B");list.add("C");User u=new User("张三","123456",list)System.out.println(u);//将对象转化为JSON对象并且,将这个JSON对象转化为字符串String jsonString=JSON.toJSON(u).toString();System.out.println(jsonString);//此时我们就可以把这个jsonString直接传送给其它系统

5.2、 JSOM转化为对象

  //有可能别人会给我们传递给JSON字符串,如下://这里的 \" 就是"相当于将"做了一次转义,避免java是同这个为一个字符串String jsonStr="{\"password\":\"password\",\"name\":\"admin\",\"list\":[\"E\",\"F\",\"G\"]}";//这个jsonStr就是别的系统传递给我们的JSON字符串​//接下来我们可以把这个jsonStr转化为一个我们的java对象//相当于把Json字符串转化为Json对象JSONObject jsonObject=JSON.parseObject(jsonStr);System.out.println("Json对象"+jsonObject);System.out.println("Json字符"+jsonStr);//只有Json对象可以操作去获取迭代器,获取值等等,其本质有一点点类似我们的mapSet<String> string=jsonObject.keySet();Iterstor<String> iterstor=string.iterstor();while(iterstor.hasNext()){String next=iterstor.next();System.out.println(next+":"+jsonObject.get(next));}​//若想直接把json字符串转化为对象,我们只需要将被转化的类型class对象传入User user = JSON.parseObject(jsonStr,User.class);//此时我们可以直接通过user这个对象,调用其中的方法System.out.println(user);//上文中例子User类public class User{private String name;private String password;private List<String> lsit;public User(String name,String password,List<String> list){this.name=name;this.password=password;this.list=list;}public String getName(){return name;}public void setName(String name){this.name=name;}public String getPassword(){return password;}public void setPassword(String password){this.password=password;}public List<String> getList(){return list;}public void setList(List<String> list){this.list=list;}@Overridepublic String toString(){return "User{"+"name="+name+'\''+",list="+Arrays.toString(list.toArray())+'}';}}

5.3、 JOSN字符串、JSON对象、Java对象

Json字符串是字符串,字符串调用是字符串的方法,无法通过Json字符串去直接获取某个Key的值,需要将他转化为Json对象或者java对象

Json对象是Json对象,他可以调用的方法均为Json对象的方法,他可以获取值,但是无法调用Java的对象方法

Java对象才可以直接调用对象的方法

比如我们曾经学习的Dog类,他有一个pla()方法

JSON字符串,JSON对象,JAVA对象三者,只有JAVA对象可以调用play()方法

JAVA-XMLJSON相关推荐

  1. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  2. java object jsonobject_JSONObject简介

    本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要后台返回的是一个json的 ...

  3. java转json在线工具,[工具]JSON校验、转换在线工具

    1. 在线JSON代码检验.检验.美化.格式化工具[简单易用的格式化工具]: http://tools.jb51.net/code/json 2. JSON在线格式化工具[代码高亮及可控缩进大小的格式 ...

  4. Stimulsoft Reports.JAVA 2022.4.5 Crack

    Stimulsoft Reports.JAVA Java 报表工具 Stimulsoft Reports.JAVA 是一种报告工具,用于在您的 Java 应用程序中进行业务报告的交互和工作.它包含 J ...

  5. Java中操作Xml使用备忘

    List item 文章目录 Java中操作Xml使用备忘 1. Hutool中XmlUtil的使用简介 2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时,推荐使用] 2 ...

  6. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  7. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  8. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  9. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  10. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

最新文章

  1. Python 循环列表删除元素的注意事项
  2. SAP OData Gateway里uri type为metadata的请求处理逻辑
  3. bfs广度优先搜索算法_图的广度优先搜索(BFS)
  4. 原生JS数组去重的几种方法
  5. 上手 Docker 容器,不应该是个问题
  6. 关于A+B+C问题4种语言的解决办法,Java、C语言、C++、Python
  7. 50道编程小题目之【兔子数量】
  8. linux shell java 参数_java调用linux中的shell脚本传递参数并返回执行结果
  9. leetcode 273场周赛 Problem-C
  10. conda - 创建虚拟环境并配置tensorflow-gpu
  11. 一套解决方案,多个项目
  12. 快速傅里叶变换(蝶形算法c++源代码)
  13. 雷锋科普:小米M2之芯高通APQ8064芯片组解析
  14. 学术汇报(academic presentation)/PPT应该怎么做?
  15. 不畏将来,不念过往,如此安好
  16. 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...
  17. disruptor 框架使用以及ringbuffer原理解析
  18. otg android 键盘,使用USB OTG将手机、平板连上键盘、U盘
  19. 这个春节,小灰收到一件不寻常的礼物
  20. 【它山之玉】人生的自然法则-科学网马臻

热门文章

  1. OLED 之 概念介绍
  2. 中科院 鲁士文 计算机网络,《计算机网络-鲁士文》10_基于IP的多协议标记交换技术.pptx...
  3. OLED模块以及OLED屏幕上显示
  4. Java中导出pdf文件,pdf工具类demo
  5. Object转成map对象
  6. Java 枚举异常的类型
  7. C语言之素数判断及输出(1~100所有的素数)
  8. 制造业企业招工难,怎么从根本上解决?
  9. 嵌入式linux开发uboot启动过程源码分析(一)
  10. ZLMediaKit Windows编译快速入门