Json for Java

引言

       学习了这么久的Web开发,很多时候都会很烦恼,因为当我需要有一段数据(或者说是一个对象集合)需要在页面上进行展示的时候就会变得很烦恼,因为对于我来说我只会使用EL表达式对处理的数据进行获取并且展示出来。然而这种方式复杂并且没有效率。
        后面慢慢的接触到了Json和JavaScript数据的展示就变得简单明了和直接了。

什么是Json?

简介:

       Json(JavaScript Object Notation),从英文就可以看出Json是什么,是JavaScript中对象的标记方式和符号,Json类似于XML,是一种数据交换格式,当Java产生了一些数据想要给JavaScript时,则除了利用XML以外可以使用Json进行数据的交换。
注意:Json并不是一个文档格式,一般Json格式的文档都存在于txt文件中,它与XML不同,XML是一个标准。

数据结构:

       了解了Json是什么,那么数据结构是什么样的,就像你可能记住了一个人的名字,那么后续是不是需要将这个人的名字和这个人的长相进行对应起来。
       Json有俩种数据结构

  1. 对象(Object){…}
  2. 数组(Array)[….]
            对于对象来说,对象类似Java中的Map集合,由Key和Value组成,但不同的是Json在Key和Value之间需要:进行分割标明。
    对象(Object)
            而数组,其实和对象时一样的,不一样的是数组单个数据内容的集合,而对象是键值对的形式出现。作为数组它的数据也可以是一个对象。(类似Java中的List)
    数组(Array)
    图片很直观的展示了Json的数据结构。
    这里写图片描述

为什么使用Json?

  1. Json的数据格式比简单,易于读写,格式都是压缩的,占用带宽小。
  2. 易于解析这种语言,客户端的JavaScript可以简单的通过eval()函数对Json的数据进行读取和搜索。并且可以通过.来进行数据内容的查找与锁定
  3. 支持多种语言, 包括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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值