Java和JavaScript中使用Json方法大全

澳门新葡亰娱乐在线 10

本文由码农网 –
小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

林炳文Evankaka原创作品。转载请注明出处澳门新葡亰娱乐在线,    

不管有多少服务器端语言出现,没有谁能够取代PHP。至少是不久的将来都不可能。
PHP还有许多最著名的web应用程序的支柱。

        摘要:JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

如果你是一个后端开发人员,并且PHP是你技术堆栈的一部分,那么你会发现本教程非常有用。在这篇文章中,我将讲解如何一步一步使用PHP,FusionCharts的核心JavaScript图表库,以及它的PHP图表包装程序创建漂亮的图表。

一、准备工作

      
json是个非常重要的数据结构,在web开发中应用十分广泛。我觉得每个人都应该好好的去研究一下json的底层实现,分析一下json的相关内容,希望大家能有所收获。首先给大家说一下使用json前的准备工作,需要准备下面的六个jar包:

澳门新葡亰娱乐在线 1

      
这里我统一下好打包了,可以在这里来下

需要说明几点:
(1)json-lib最新版本可以从这个地方下载:
(2)ezmorph是一个简单的java类库,用于将一种bean转换成另外一种bean。其动态bean的实现依赖于commons-beanutils包。ezmorph可以在这个地方下载源码:
(3)commons-beanutils是操作Java
Bean的类库,依赖于commons-collections。可以从这里下载:

(4)commons-collections类库是各种集合类和集合工具类的封装。可以从这里下载:

下面就是我们今天要完成的目标图表

二、语法相关

  • JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。
        数据在名称/值对中
       数据由逗号分隔
      花括号保存对象
      方括号保存数组

  • JSON 值

JSON 值可以是:
      数字(整数或浮点数)
     字符串(在双引号中)
     逻辑值(true 或 false)
     数组(在方括号中)
      对象(在花括号中)
     null

  • JSON有两种表示结构

对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{
    key1:value1,
    key2:value2,
    ...
}

{"department":"产品研发","name":"小王","age":23}

其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组

数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]

如:

[{"department":"产品研发","name":"小王","age":23},{"department":"产品研发","name":"小王","age":23}]

澳门新葡亰娱乐在线 2

三、Java中使用Json基本使用方法

工程免费下载

Jar包我也上传了,在这里

整个工程目录 如下 :

澳门新葡亰娱乐在线 3

Employer.java如下

package com.mucfc.json;

import net.sf.json.JSONString;

public class Employer {

    private String name;

    private Integer age;

    private String department;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    @Override
    public String toString() {
        return "Employer [name=" + name + ", age=" + age + ", department="
                + department + "]";
    }

/*  @Override  要调用这个方法请implements JSONString
    public String toJSONString() {
        return "{"name":"" + name + "","department":"" + department + ""}";
    }*/

}

JsonTest.java全部代码如下:

package com.mucfc.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;

/**
 *Json使用方法总结
 *@author linbingwen(博客:http://blog.csdn.net/evankaka)
 *@since 2015.7.3
 */
public class JsonTest {

    public static void main(String args[]){
        beanToJson();
        beanToJson1();
        beanToJson2();
        arrayToJson();
        listToJson();       
        mapToJson();

    }


    /**
     * bean对象转json
     * @return void
     */
    public static void beanToJson(){
        Employer employer=new Employer();
        employer.setName("小王");
        employer.setAge(23);
        employer.setDepartment("产品研发");
        JSONObject json = JSONObject.fromObject(employer);
        System.out.println("-----------------------------------------beanToJson() 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------beanToJson() 结束------------------------------------------------");
    }

    /**
     * bean对象转json,带过滤器
     * @return void
     */
    public static void beanToJson1(){
        Employer employer=new Employer();
        employer.setName("小王");
        employer.setAge(23);
        employer.setDepartment("产品研发");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[]
        { "age" });
        JSONObject json = JSONObject.fromObject(employer, jsonConfig);
        System.out.println("-----------------------------------------beanToJson1()带过滤器 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------beanToJson1()带过滤器 结束------------------------------------------------");
    }

    /**
     * bean对象转json,带过滤器
     * @return void
     */
    public static void beanToJson2(){
        Employer employer=new Employer();
        employer.setName("小王");
        employer.setAge(23);
        employer.setDepartment("产品研发");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
            public boolean apply(Object source, String name, Object value)
            {
                return source instanceof Employer && name.equals("age");
            }
        });
        JSONObject json = JSONObject.fromObject(employer, jsonConfig);
        System.out.println("-----------------------------------------beanToJson2() 带过滤器 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------beanToJson2() 带过滤器 结束------------------------------------------------");
    }

    /**
     * array对象转json
     * @return void
     */
    public static void arrayToJson(){
        Employer employer1=new Employer();
        employer1.setName("小王");
        employer1.setAge(23);
        employer1.setDepartment("产品研发");

        Employer employer2=new Employer();
        employer2.setName("小王");
        employer2.setAge(23);
        employer2.setDepartment("产品研发");        
        Employer[] employers=new Employer[]{employer1,employer2};
        JSONArray json = JSONArray.fromObject(employers);
        System.out.println("-----------------------------------------arrayToJson() 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------arrayToJson() 结束------------------------------------------------");
    }

    /**
     * list对象转json
     * @return void
     */
    public static void listToJson(){
        List<String> list = new ArrayList<String>();
        list.add( "first" );
        list.add( "second" );
        JSONArray json = JSONArray.fromObject(list);
        System.out.println("-----------------------------------------listToJson() 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------listToJson() 结束------------------------------------------------");
    }

    /**
     * map对象转json
     * @return void
     */
    public static void mapToJson(){
        Map<Object,Object> map = new HashMap<Object,Object>();
        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);
        System.out.println("-----------------------------------------mapToJson() 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------mapToJson() 结束------------------------------------------------");
    }


}

下面分别对各个部分来进行说明

  1. Bean转换成json代码

    /**

      * bean对象转json
      * @return void
      */
     public static void beanToJson(){
         Employer employer=new Employer();
         employer.setName("小王");
         employer.setAge(23);
         employer.setDepartment("产品研发");
         JSONObject json = JSONObject.fromObject(employer);
         System.out.println("-----------------------------------------beanToJson() 开始------------------------------------------------");
         System.out.println(json.toString());
         System.out.println("-----------------------------------------beanToJson() 结束------------------------------------------------");
     }
    

运行结果如下:

澳门新葡亰娱乐在线 4

  1. 数组转换成json代码

    /**

      * array对象转json
      * @return void
      */
     public static void arrayToJson(){
         Employer employer1=new Employer();
         employer1.setName("小王");
         employer1.setAge(23);
         employer1.setDepartment("产品研发");
    
         Employer employer2=new Employer();
         employer2.setName("小王");
         employer2.setAge(23);
         employer2.setDepartment("产品研发");        
         Employer[] employers=new Employer[]{employer1,employer2};
         JSONArray json = JSONArray.fromObject(employers);
         System.out.println("-----------------------------------------arrayToJson() 开始------------------------------------------------");
         System.out.println(json.toString());
         System.out.println("-----------------------------------------arrayToJson() 结束------------------------------------------------");
     }
    

运行结果如下:

澳门新葡亰娱乐在线 5

  1. List集合转换成json方法

    /**

      * list对象转json
      * @return void
      */
     public static void listToJson(){
         List<String> list = new ArrayList<String>();
         list.add( "first" );
         list.add( "second" );
         JSONArray json = JSONArray.fromObject(list);
         System.out.println("-----------------------------------------listToJson() 开始------------------------------------------------");
         System.out.println(json.toString());
         System.out.println("-----------------------------------------listToJson() 结束------------------------------------------------");
     }
    

运行结果如下:
                                          
澳门新葡亰娱乐在线 6

  1. Map集合转换成json方法

    /**

      * map对象转json
      * @return void
      */
     public static void mapToJson(){
         Map<Object,Object> map = new HashMap<Object,Object>();
         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);
         System.out.println("-----------------------------------------mapToJson() 开始------------------------------------------------");
         System.out.println(json.toString());
         System.out.println("-----------------------------------------mapToJson() 结束------------------------------------------------");
     }
    

运行结果如下:
                                        
澳门新葡亰娱乐在线 7

有四个步骤:

四、JSONObject的过滤设置

通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值。例如下面的类:

package com.mucfc.json;

public class Employer {

    private String name;

    private Integer age;

    private String department;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    @Override
    public String toString() {
        return "Employer [name=" + name + ", age=" + age + ", department="
                + department + "]";
    }

}

如果我想过滤age属性怎么办?

方法一:实现JSONString接口

package com.mucfc.json;

import net.sf.json.JSONString;

public class Employer implements JSONString{

    private String name;

    private Integer age;

    private String department;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    @Override
    public String toString() {
        return "Employer [name=" + name + ", age=" + age + ", department="
                + department + "]";
    }

    @Override
    public String toJSONString() {
        return "{"name":"" + name + "","department":"" + department + ""}";
    }

}

澳门新葡亰娱乐在线 8

方法二:设置jsonconfig实例,对包含和需要排除的属性进行添加或删除。

  /**
     * bean对象转json,带过滤器
     * @return void
     */
    public static void beanToJson1(){
        Employer employer=new Employer();
        employer.setName("小王");
        employer.setAge(23);
        employer.setDepartment("产品研发");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[]
        { "age" });
        JSONObject json = JSONObject.fromObject(employer, jsonConfig);
        System.out.println("-----------------------------------------beanToJson1()带过滤器 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------beanToJson1()带过滤器 结束------------------------------------------------");
    }

澳门新葡亰娱乐在线 9

方法三:使用propertyFilter实例过滤属性

 /**
     * bean对象转json,带过滤器
     * @return void
     */
    public static void beanToJson2(){
        Employer employer=new Employer();
        employer.setName("小王");
        employer.setAge(23);
        employer.setDepartment("产品研发");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
            public boolean apply(Object source, String name, Object value)
            {
                return source instanceof Employer && name.equals("age");
            }
        });
        JSONObject json = JSONObject.fromObject(employer, jsonConfig);
        System.out.println("-----------------------------------------beanToJson2() 带过滤器 开始------------------------------------------------");
        System.out.println(json.toString());
        System.out.println("-----------------------------------------beanToJson2() 带过滤器 结束------------------------------------------------");
    }

澳门新葡亰娱乐在线 10

java工程下载

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图