引言
学习了这么久的Web开发,很多时候都会很烦恼,因为当我需要有一段数据(或者说是一个对象集合)需要在页面上进行展示的时候就会变得很烦恼,因为对于我来说我只会使用EL表达式对处理的数据进行获取并且展示出来。然而这种方式复杂并且没有效率。
后面慢慢的接触到了Json和JavaScript数据的展示就变得简单明了和直接了。
什么是Json?
简介:
Json(JavaScript Object Notation),从英文就可以看出Json是什么,是JavaScript中对象的标记方式和符号,Json类似于XML,是一种数据交换格式,当Java产生了一些数据想要给JavaScript时,则除了利用XML以外可以使用Json进行数据的交换。
注意:Json并不是一个文档格式,一般Json格式的文档都存在于txt文件中,它与XML不同,XML是一个标准。
数据结构:
了解了Json是什么,那么数据结构是什么样的,就像你可能记住了一个人的名字,那么后续是不是需要将这个人的名字和这个人的长相进行对应起来。
Json有俩种数据结构
- 对象(Object){…}
- 数组(Array)[….]
对于对象来说,对象类似Java中的Map集合,由Key和Value组成,但不同的是Json在Key和Value之间需要:进行分割标明。
而数组,其实和对象时一样的,不一样的是数组单个数据内容的集合,而对象是键值对的形式出现。作为数组它的数据也可以是一个对象。(类似Java中的List)
图片很直观的展示了Json的数据结构。
为什么使用Json?
- Json的数据格式比简单,易于读写,格式都是压缩的,占用带宽小。
- 易于解析这种语言,客户端的JavaScript可以简单的通过eval()函数对Json的数据进行读取和搜索。并且可以通过.来进行数据内容的查找与锁定
- 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
怎么使用Json?
我们从简单的例子入手,或者说从熟悉的XML文件格式进行导入。
XML文件和Json互转
<person>
<name>linqisong</name>
<age>23</age>
</person>
{
"name":"linqisong",
"age":23
}
Java对象与Json互转
class Person(){
private String name;
private int age;
private Date birth;
/* 此处省略Getter和Setter方法*/
}
{
"name":"name",
"age":"age",
"birth":"2013-8-9"
}
那么我们需要怎么在Java中对数据进行转化呢?我们需要下载Java中对Json对象操作的Jar,将下载的Jar导入工程那么我们就可以对数据进行转化了。具体方法可以参见Json的API文档http://www.json.org/java/index.html
JSONObject实例与解析
import org.json.JSONObject;
public class Test {
public static void main(String[] args) throws Exception{
JSONObject json = new JSONObject("{'name':'linqisong','age':23}");
String name = json.getString("name");
int age = json.getInt("age");
System.out.println(name+":"+age);
}
}
JSONArray实例与解析
import org.json.JSONArray;
public class Test {
public static void main(String[] args) throws Exception{
JSONArray jsonarray = new JSONArray("[{'name':'lqs','age':22},{'name':'linqisong','age':23}]");
for(int i=0;i<jsonarray.length();i++){
String name = jsonarray.getJSONObject(i).getString("name");
int age = jsonarray.getJSONObject(i).getInt("age");
System.out.println("name="+name);
System.out.println("age="+age);
}
}
}
List集合转换成Json方法
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
Map集合转换成Json方法
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);
Bean转换成Json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
数组转换成Json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
beans转换成Json代码
List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");
JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");
list.add(jb1);
list.add(jb2);
JSONArray ja = JSONArray.fromObject(list);