1.简介:
XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。具体的可以问Google或百度。相比之JSON这种轻量级的数据交换格式,XML可以称为重量级的了。
JSON : JavaScript Object Notation 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
2.对比
1)数据交换格式中XML是重量级的,JSON是轻量级的。这个体现在解析上。
XML目前设计了三种解析方式:DOM、SAX和pull;
SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。
所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。
2)数据交换格式比较之关于数据格式编码及解析的难度:
在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端解析XML,都常常导致复杂的代码,极低的开发效率。
同XML或HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。
JSON格式目前在Web Service中推广还属于初级阶段,没有XML那么通用性。在web serivice应用中,至少就目前来说XML仍有不可动摇的地位。
3.JSON应用
(1).JSON是一种轻量级的数据交换格式
(2).JSON基于两种数据结构:Object和Array。其中Object是“名称/值”对的集合。
(3).在Android中包含四个与JSON相关的类和一个Exceptions:
a.JSONObject
这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。
b.JSONArray
它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3]
c.JSONStringer
这个类可以帮助快速和便捷的创建JSONtext。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntaxrules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。例如:
String myString = new JSONStringer().object().key("name").value("小猪").endObject().toString();
myString ={"name" : "小猪"}
d.JSONTokener
这个是系统为JSONObject和JSONArray构造器解析JSON source string的类,它可以从source string中提取数值信息。
e.JSONException
(4)JSON格式举例
a.Object实例:
{
"Image": {
"Width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"Thumbnail": {
"Url": "http://www.example.com/image/481989943",
"Height": 125,
"Width": "100"
},
"IDs": [116, 943, 234, 38793]
}
}
b.Array实例:
[
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Address": "",
"City": "SAN FRANCISCO",
"State": "CA",
"Zip": "94107",
"Country": "US"
},
{
"precision": "zip",
"Latitude": 37.371991,
"Longitude": -122.026020,
"Address": "",
"City": "SUNNYVALE",
"State": "CA",
"Zip": "94085",
"Country": "US"
}
]
4.JSON解析案例
(1)解析Object之一:
String jsonString ={"url":http://www.cnblogs.com/qianxudetianxia};
//解析方法:JSONObject demoJson = new JSONObject(jsonString);
String url = demoJson.getString("url");
(2)解析Object之二:
String jsonString ={"name":"android"," version":"Beta1.0"};
//解析方法:JSONObject demoJson = new JSONObject(jsonString);
String name = demoJson.getString("name");
String version = demoJson.getString("version");
System.out.println("name:"+name+",version:"+version);
(3).解析Array之一:
String jsonString ={"number":[1,2,3]};
//解析方法:JSONObject demoJson = new JSONObject(jsonString);
JSONArray numberList = demoJson.getJSONArray("number");
for
(
int
i=0; i<numberList.length(); i++){
System.
out
.println(numberList.getInt(i));
}
(4).解析Array之二:
String jsonString ={"number":[[1],[2],[3]]};
//解析方法:
//嵌套数组遍历
JSONObject demoJson = new JSONObject(jsonString);
JSONArray numberList = demoJson.getJSONArray("number");
for(int i=0; i<numberList.length(); i++){
//获取数组中的数组
System.out.println(numberList.getJSONArray(i).getInt(0));
}
(5).解析Object和Array:
String jsonString ={"mobile":[{"name":"android"},{"name":"iphone"}]};
//解析方法:
JSONObject demoJson = new JSONObject(jsonString);
JSONArray numberList = demoJson.getJSONArray("mobile");
for(int i=0; i<numberList.length(); i++){
System.out.println(numberList.getJSONObject(i).getString("name"));
}
(6).使用optType:
上面的例子,使用getType在碰到查找不到节点的时候,会抛出异常。
如果使用optType,找不到节点,则返回null或者默认值。
//无url节点,抛出异常String url = demoJson.getString("url");
//无url节点,返回空,如果为基本类型,则返回默认值String url = demoJson.optString("url");
(7).UTF-8的BOM头导致解析JSON异常的问题
到json文件保存为utf-8的时候,在windows平台下,会产生bom头"EF BB EF"字节在文本的最前面(需要用十六进制工具打开才能看的到)。
有两种解决方法:
a.使用UltraEdit打开json文件, 另存为的时候,选择格式UTF-8,无BOM头,如果还不行,在用记事本打开,另存为UTF-8下,多试几次就可以了。
b.使用代码处理,截取json主体内容:
String jsonString = getJsonString();
jsonString =jsonString.substring(jsonString.indexOf("{"),jsonString.lastIndexOf("}")+1);
相关推荐
2. java实现Xml与json相互转换的必要性:在Web开发中,我们经常需要在前后端之间进行数据的交换,由于后端和前端使用的数据格式可能不同,这时候就需要实现数据格式的转换,尤其是在使用Java作为后端开发语言时,...
在Java开发中,XML(可扩展标记语言)和JSON...在`XmlToJson.java`这个工具类中,我们展示了如何利用Jackson库进行XML与JSON之间的转换。这只是一个基础示例,实际项目中可能需要进行更复杂的错误处理和数据验证。
实现的一个简单的基于java 的,可以在xml和json之间相互转换的工具类,因为实在没有积分了,所以要点积分,希望理解~
java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和...
Java实现XML到JSON转换涉及到的是数据格式之间的互换,这对于数据交换、API接口设计和Web服务来说非常常见。XML(可扩展标记语言)是一种结构化数据格式,常用于存储和传输数据;而JSON(JavaScript Object Notation...
Jackson提供了`XmlMapper`类来进行XML与JSON之间的转换。以下是如何将XML字符串转换为JSON对象的示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; import ...
这里我们将以Jackson库为例,因为它是Java中最流行的JSON处理库之一,它提供了XML到JSON的转换功能。 1. **引入Jackson库**:为了使用Jackson库,你需要在项目中添加Jackson的依赖。如果你使用Maven,可以在pom.xml...
将XML转换为JSON对象是一个常见的需求,特别是在需要将XML数据与JavaScript或JSON支持的其他语言进行交互时。 本项目提供的"解析xml---xml文件转json对象"是一个Java工具类,用于将XML文件解析成JSON对象,便于处理...
总之,XML与JSON之间的转换是Java和Android开发中的常见任务。选择合适的jar包并正确引入,可以极大地简化开发工作,提高代码的可维护性和效率。在实际项目中,应根据具体需求和库的特性,选择最合适的XML到JSON转换...
5. **安全与最佳实践**:在处理XML到JSON的转换时,应注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器漏洞获取服务器敏感信息的攻击方式。确保使用安全配置的XML解析器,并避免解析不受信任的XML...
本篇将详细介绍如何使用Java工具类进行XML与JSON的转换,并介绍相关知识。 首先,`pom依赖.txt`文件中应包含的是Maven项目的依赖信息。在Java项目中,我们需要引入处理XML和JSON转换的库。通常,我们使用如Jackson...
本文将详细探讨Java中JSON与XML的互转,以及如何在实际开发中运用这些技术。 标题:“java json xml转换” 描述:“java版的json与xml之间的转换的实例demo” JSON和XML各有优缺点。JSON以其简洁、易于阅读和生成...
03-Java核心类库_XML与JSON(配套工具)。包含fastjson-1.2.70.jar、gson-2.8.6.jar、dom4j-1.6.1.jar、jaxen-1.1-beta-7.jar、xstream-1.3.1.jar。
它也支持将JSON数据转换为XML,这与我们的转换任务相符。 3. **xstream-1.3.1.jar**:XStream是另一个Java库,它提供了一种简单的方式来序列化和反序列化Java对象为XML。在XML到JSON转换过程中,XStream可能首先...
描述中提到的jar包可能包含如JAXB(Java Architecture for XML Binding)、Jackson、Gson或org.json等库的功能,这些库允许开发者在Java中方便地进行XML与JSON的转换。 1. JAXB:Java标准API,用于在Java对象和XML...
在Java中,`json-lib`是一个非常流行的JSON库,它提供了将XML转换为JSON的功能。以下是如何使用json-lib实现这一转换的步骤: 1. 引入依赖:在项目中引入json-lib的JAR包,通常可以通过Maven或Gradle添加依赖。 2....
下面我们将详细探讨XML、Java与JSON的转换方法。 1. XML到JSON转换: - 使用Java的Jackson库:Jackson库中的`com.fasterxml.jackson.databind.ObjectMapper`类提供了将XML转换为JSON的功能。首先,我们需要解析XML...
"java转换xml、list、map和json" 本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点。 xml和map之间的转换 在Java中,xml和map之间的转换可以通过使用dom4j库来实现。dom4j是一个Java开源库,...
此工具类使用dom4j对xml文件解析成json对象