Maison développement back-end Tutoriel XML/RSS Framework JSON-lib, la conversion de JSON et XML n'est plus difficile

Framework JSON-lib, la conversion de JSON et XML n'est plus difficile

Feb 18, 2017 pm 03:10 PM

Json-lib peut convertir des objets Java en chaînes au format json, et peut également convertir des objets Java en documents au format XML. Il peut également convertir des chaînes JSON en objets Java ou des chaînes XML en objets Java.

1. Préparation

1. Accédez au package d'outils de téléchargement officiel json-lib

Adresse de téléchargement :

http://www.php.cn/

La dernière version est la 2.4 dans cet exemple. v2.3 est utilisé ; json-lib nécessite également les packages de dépendances suivants :

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6

Site officiel : http://www.php.cn/

Ensuite, ajoutez le package jar suivant au projet :

Framework JSON-lib, la conversion de JSON et XML nest plus difficile

Bien sûr, vous pouvez également utiliser la bibliothèque json-lib 2.4

Vous pouvez consulter le site officiel proposez ici Exemple :

http://www.php.cn/

Étant donné que l'exemple introduit cette fois nécessite l'outil junit, vous devez également ajouter le fichier jar junit, la version est Version 4.8.2, adresse de téléchargement : http://www.php.cn/

Si vous ne savez toujours pas ce qu'est JSON ? Ensuite, vous devriez jeter un œil à http://www.php.cn/

2 Le code du JavaBean à convertir est le suivant :


<.>

1

package com.hoo.entity;

Copier après la connexion
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public class Student {
Copier après la connexion
    private int id;
Copier après la connexion
    private String name;
Copier après la connexion
    private String email;
Copier après la connexion
    private String address;
Copier après la connexion
    private Birthday birthday;
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    //setter、getter
Copier après la connexion
Copier après la connexion
    public String toString() {
Copier après la connexion
        return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Anniversaire .java


1

package com.hoo.entity;

Copier après la connexion
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public class Birthday {
Copier après la connexion
    private String birthday;
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    public Birthday(String birthday) {
Copier après la connexion
        super();
Copier après la connexion
        this.birthday = birthday;
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    //setter、getter
Copier après la connexion
Copier après la connexion
    public Birthday() {}
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    @Override
Copier après la connexion
    public String toString() {
Copier après la connexion
        return this.birthday;
Copier après la connexion
    }
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Notez que les méthodes getter et setter ci-dessus sont omises, construisez-les vous-même .

3. Créez une nouvelle classe de test JsonlibTest. Le code de base est le suivant :


1

package com.hoo.test;

Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
import java.lang.reflect.InvocationTargetException;
Copier après la connexion
import java.util.ArrayList;
Copier après la connexion
import java.util.Collection;
Copier après la connexion
import java.util.Date;
Copier après la connexion
import java.util.HashMap;
Copier après la connexion
import java.util.Iterator;
Copier après la connexion
import java.util.List;
Copier après la connexion
import java.util.Map;
Copier après la connexion
import java.util.Set;
Copier après la connexion
import net.sf.json.JSON;
Copier après la connexion
import net.sf.json.JSONArray;
Copier après la connexion
import net.sf.json.JSONFunction;
Copier après la connexion
import net.sf.json.JSONObject;
Copier après la connexion
import net.sf.json.JSONSerializer;
Copier après la connexion
import net.sf.json.JsonConfig;
Copier après la connexion
import net.sf.json.processors.JsonValueProcessor;
Copier après la connexion
import net.sf.json.util.PropertyFilter;
Copier après la connexion
import net.sf.json.xml.XMLSerializer;
Copier après la connexion
import org.apache.commons.beanutils.PropertyUtils;
Copier après la connexion
import org.junit.After;
Copier après la connexion
import org.junit.Before;
Copier après la connexion
import org.junit.Test;
Copier après la connexion
import com.hoo.entity.Birthday;
Copier après la connexion
import com.hoo.entity.Student;
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
/**
Copier après la connexion
Copier après la connexion
 * <b>function:</b> 用json-lib转换java对象到JSON字符串
Copier après la connexion
 * 读取json字符串到java对象,序列化jsonObject到xml
Copier après la connexion
 * json-lib-version: json-lib-2.3-jdk15.jar
Copier après la connexion
 * 依赖包:
Copier après la connexion
 * commons-beanutils.jar
Copier après la connexion
 * commons-collections-3.2.jar
Copier après la connexion
 * ezmorph-1.0.3.jar
Copier après la connexion
 * commons-lang.jar
Copier après la connexion
 * commons-logging.jar
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 2:28:39 PM
Copier après la connexion
 * @file JsonlibTest.java
Copier après la connexion
 * @package com.hoo.test
Copier après la connexion
 * @project WebHttpUtils
Copier après la connexion
 * @blog http://www.php.cn/
Copier après la connexion
 * @email hoojo_@126.com
Copier après la connexion
 * @version 1.0
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
@SuppressWarnings({ "deprecation", "unchecked" })
Copier après la connexion
public class JsonlibTest {
Copier après la connexion
    private JSONArray jsonArray = null;
Copier après la connexion
    private JSONObject jsonObject = null;
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    private Student bean = null;
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    @Before
Copier après la connexion
    public void init() {
Copier après la connexion
        jsonArray = new JSONArray();
Copier après la connexion
        jsonObject = new JSONObject();
Copier après la connexion
        <br>
Copier après la connexion
        bean = new Student();
Copier après la connexion
        bean.setAddress("address");
Copier après la connexion
        bean.setEmail("email");
Copier après la connexion
        bean.setId(1);
Copier après la connexion
        bean.setName("haha");
Copier après la connexion
        Birthday day = new Birthday();
Copier après la connexion
        day.setBirthday("2010-11-22");
Copier après la connexion
        bean.setBirthday(day);
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    @After
Copier après la connexion
    public void destory() {
Copier après la connexion
        jsonArray = null;
Copier après la connexion
        jsonObject = null;
Copier après la connexion
        bean = null;
Copier après la connexion
        System.gc();
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    public final void fail(String string) {
Copier après la connexion
        System.out.println(string);
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    public final void failRed(String string) {
Copier après la connexion
        System.err.println(string);
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

上面的init会在每个方法之前运行,destory会在每个方法完成后执行。分别用到了junit的@Before、@After注解,如果你对junit的这些注解不是很了解,可以看看junit官方的测试用例的example和doc;

JSONObject是将Java对象转换成一个json的Object形式,JSONArray是将一个Java对象转换成json的Array格式。

那什么是json的Object形式、Array形式?

用通俗易懂的方法将,所谓的json的Object形式就是一个花括号里面存放的如JavaMap的键值对,如:{name:’hoojo’, age: 24};

那么json的Array形式呢?

就是中括号,括起来的数组。如:[ ‘json’, true, 22];

如果你还想了解更多json方面的知识,请看:http://www.php.cn/

除了上面的JSONArray、JSONObject可以将Java对象转换成JSON或是相反,将JSON字符串转换成Java对象,还有一个对象也可以完成上面的功能,它就是JSONSerializer;下面我们就来看看它们是怎么玩转Java对象和JSON的。

二、 Java对象序列化成JSON对象

1、 将JavaObject转换吃JSON字符串

在JsonlibTest中添加如下代码:


1

/*=========================Java Object >>>> JSON String ===========================*/

Copier après la connexion
/**
Copier après la connexion
Copier après la connexion
 * <b>function:</b>转Java Bean对象到JSON
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 2:35:54 PM
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
public void writeEntity2JSON() {
Copier après la connexion
    fail("==============Java Bean >>> JSON Object==================");
Copier après la connexion
    fail(JSONObject.fromObject(bean).toString());
Copier après la connexion
    fail("==============Java Bean >>> JSON Array==================");
Copier après la connexion
    fail(JSONArray.fromObject(bean).toString());//array会在最外层套上[]
Copier après la connexion
    fail("==============Java Bean >>> JSON Object ==================");
Copier après la connexion
    fail(JSONSerializer.toJSON(bean).toString());
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("========================JsonConfig========================");
Copier après la connexion
    JsonConfig jsonConfig = new JsonConfig();
Copier après la connexion
Copier après la connexion
    jsonConfig.registerJsonValueProcessor(Birthday.class, new JsonValueProcessor() {
Copier après la connexion
        public Object processArrayValue(Object value, JsonConfig jsonConfig) {
Copier après la connexion
            if (value == null) {
Copier après la connexion
                return new Date();
Copier après la connexion
            }
Copier après la connexion
Copier après la connexion
            return value;
Copier après la connexion
        }
Copier après la connexion
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
Copier après la connexion
            fail("key:" + key);
Copier après la connexion
            return value + "##修改过的日期";
Copier après la connexion
        }
Copier après la connexion
Copier après la connexion
 <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    });
Copier après la connexion
Copier après la connexion
    jsonObject = JSONObject.fromObject(bean, jsonConfig);
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail(jsonObject.toString());
Copier après la connexion
    Student student = (Student) JSONObject.toBean(jsonObject, Student.class);
Copier après la connexion
    fail(jsonObject.getString("birthday"));
Copier après la connexion
    fail(student.toString());
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("#####################JsonPropertyFilter############################");
Copier après la connexion
    jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
Copier après la connexion
        public boolean apply(Object source, String name, Object value) {
Copier après la connexion
            fail(source + "%%%" + name + "--" + value);
Copier après la connexion
            //忽略birthday属性
Copier après la connexion
            if (value != null && Birthday.class.isAssignableFrom(value.getClass())) {
Copier après la connexion
                return true;
Copier après la connexion
            }
Copier après la connexion
Copier après la connexion
            return false;
Copier après la connexion
        }
Copier après la connexion
Copier après la connexion
    });
Copier après la connexion
Copier après la connexion
    fail(JSONObject.fromObject(bean, jsonConfig).toString());
Copier après la connexion
    fail("#################JavaPropertyFilter##################");
Copier après la connexion
    jsonConfig.setRootClass(Student.class);
Copier après la connexion
    jsonConfig.setJavaPropertyFilter(new PropertyFilter() {
Copier après la connexion
        public boolean apply(Object source, String name, Object value) {
Copier après la connexion
            fail(name + "@" + value + "#" + source);
Copier après la connexion
            if ("id".equals(name) || "email".equals(name)) {
Copier après la connexion
                value = name + "@@";
Copier après la connexion
                return true;
Copier après la connexion
            }
Copier après la connexion
            return false;
Copier après la connexion
        }
Copier après la connexion
Copier après la connexion
    });
Copier après la connexion
    //jsonObject = JSONObject.fromObject(bean, jsonConfig);
Copier après la connexion
    //student = (Student) JSONObject.toBean(jsonObject, Student.class);
Copier après la connexion
    //fail(student.toString());
Copier après la connexion
    student = (Student) JSONObject.toBean(jsonObject, jsonConfig);
Copier après la connexion
    fail("Student:" + student.toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

fromObject将Java对象转换成json字符串,toBean将json对象转换成Java对象;

上面方法值得注意的是使用了JsonConfig这个对象,这个对象可以在序列化的时候对JavaObject的数据进行处理、过滤等

上面的jsonConfig的registerJsonValueProcessor方法可以完成对象值的处理和修改,比如处理生日为null时,给一个特定的值。同样setJsonPropertyFilter和setJavaPropertyFilter都是完成对转换后的值的处理。

运行上面的代码可以在控制台看到如下结果:


1

==============Java Bean >>> JSON Object==================

Copier après la connexion
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}
Copier après la connexion
Copier après la connexion
==============Java Bean >>> JSON Array==================
Copier après la connexion
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}]
Copier après la connexion
==============Java Bean >>> JSON Object ==================
Copier après la connexion
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}
Copier après la connexion
Copier après la connexion
========================JsonConfig========================
Copier après la connexion
key:birthday
Copier après la connexion
{"address":"address","birthday":"2010-11-22##修改过的日期","email":"email","id":1,"name":"haha"}
Copier après la connexion
2010-11-22##修改过的日期
Copier après la connexion
haha#1#address#null#email
Copier après la connexion
#####################JsonPropertyFilter############################
Copier après la connexion
haha#1#address#2010-11-22#email%%%address--address
Copier après la connexion
haha#1#address#2010-11-22#email%%%birthday--2010-11-22
Copier après la connexion
haha#1#address#2010-11-22#email%%%email--email
Copier après la connexion
haha#1#address#2010-11-22#email%%%id--1
Copier après la connexion
haha#1#address#2010-11-22#email%%%name--haha
Copier après la connexion
{"address":"address","email":"email","id":1,"name":"haha"}
Copier après la connexion
#################JavaPropertyFilter##################
Copier après la connexion
address@address#null#0#null#null#null
Copier après la connexion
birthday@2010-11-22##修改过的日期#null#0#address#null#null
Copier après la connexion
email@email#null#0#address#null#null
Copier après la connexion
id@1#null#0#address#null#null
Copier après la connexion
name@haha#null#0#address#null#null
Copier après la connexion
Student:haha#0#address#null#null
Copier après la connexion

2、 将JavaList集合转换吃JSON字符串


1

/**

Copier après la connexion
Copier après la connexion
Copier après la connexion
 * <b>function:</b>转换Java List集合到JSON
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 2:36:15 PM
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void writeList2JSON() {
Copier après la connexion
    fail("==============Java List >>> JSON Array==================");
Copier après la connexion
    List<student> stu = new ArrayList<student>();</student></student>
Copier après la connexion
    stu.add(bean);
Copier après la connexion
Copier après la connexion
    bean.setName("jack");
Copier après la connexion
Copier après la connexion
    stu.add(bean);
Copier après la connexion
Copier après la connexion
    fail(JSONArray.fromObject(stu).toString());
Copier après la connexion
    fail(JSONSerializer.toJSON(stu).toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行此方法后,可以看到控制台输出:


1

==============Java List >>> JSON Array==================

Copier après la connexion
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},
Copier après la connexion
Copier après la connexion
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"}]
Copier après la connexion
Copier après la connexion
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},
Copier après la connexion
Copier après la connexion
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"}]
Copier après la connexion
Copier après la connexion

如果你是转换List集合,一定得用JSONArray或是JSONSrializer提供的序列化方法。如果你用JSONObject.fromObject方法转换List会出现异常,通常使用JSONSrializer这个JSON序列化的方法,它会自动识别你传递的对象的类型,然后转换成相应的JSON字符串。

3、 将Map集合转换成JSON对象


1

/**

Copier après la connexion
Copier après la connexion
Copier après la connexion
 * <b>function:</b>转Java Map对象到JSON
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 2:37:35 PM
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void writeMap2JSON() {
Copier après la connexion
    Map<string> map = new HashMap<string>();</string></string>
Copier après la connexion
    map.put("A", bean);
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    bean.setName("jack");
Copier après la connexion
Copier après la connexion
    map.put("B", bean);
Copier après la connexion
    map.put("name", "json");
Copier après la connexion
    map.put("bool", Boolean.TRUE);
Copier après la connexion
    map.put("int", new Integer(1));
Copier après la connexion
    map.put("arr", new String[] { "a", "b" });
Copier après la connexion
    map.put("func", "function(i){ return this.arr[i]; }");
Copier après la connexion
    fail("==============Java Map >>> JSON Object==================");
Copier après la connexion
Copier après la connexion
    fail(JSONObject.fromObject(map).toString());
Copier après la connexion
    fail("==============Java Map >>> JSON Array ==================");
Copier après la connexion
    fail(JSONArray.fromObject(map).toString());
Copier après la connexion
    fail("==============Java Map >>> JSON Object==================");
Copier après la connexion
Copier après la connexion
    fail(JSONSerializer.toJSON(map).toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

上面的Map集合有JavaBean、String、Boolean、Integer、以及Array和js的function函数的字符串。

运行上面的程序,结果如下:


1

==============Java Map >>> JSON Object==================

Copier après la connexion
{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
Copier après la connexion
Copier après la connexion
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
Copier après la connexion
Copier après la connexion
Copier après la connexion
"func":function(i){ return this.arr[i]; },"bool":true}
Copier après la connexion
Copier après la connexion
==============Java Map >>> JSON Array ==================
Copier après la connexion
[{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
Copier après la connexion
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
Copier après la connexion
Copier après la connexion
Copier après la connexion
"func":function(i){ return this.arr[i]; },"bool":true}]
Copier après la connexion
==============Java Map >>> JSON Object==================
Copier après la connexion
{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
Copier après la connexion
Copier après la connexion
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
Copier après la connexion
Copier après la connexion
Copier après la connexion
"func":function(i){ return this.arr[i]; },"bool":true}
Copier après la connexion
Copier après la connexion

4、 将更多类型转换成JSON


1

/**

Copier après la connexion
Copier après la connexion
Copier après la connexion
 * <b>function:</b>  转换更多数组类型到JSON
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 2:39:19 PM
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void writeObject2JSON() {
Copier après la connexion
    String[] sa = {"a", "b", "c"};
Copier après la connexion
    fail("==============Java StringArray >>> JSON Array ==================");
Copier après la connexion
    fail(JSONArray.fromObject(sa).toString());
Copier après la connexion
    fail(JSONSerializer.toJSON(sa).toString());
Copier après la connexion
    fail("==============Java boolean Array >>> JSON Array ==================");
Copier après la connexion
    boolean[] bo = { true, false, true };
Copier après la connexion
    fail(JSONArray.fromObject(bo).toString());
Copier après la connexion
    fail(JSONSerializer.toJSON(bo).toString());
Copier après la connexion
    Object[] o = { 1, "a", true, 'A', sa, bo };
Copier après la connexion
    fail("==============Java Object Array >>> JSON Array ==================");
Copier après la connexion
    fail(JSONArray.fromObject(o).toString());
Copier après la connexion
    fail(JSONSerializer.toJSON(o).toString());
Copier après la connexion
    fail("==============Java String >>> JSON ==================");
Copier après la connexion
    fail(JSONArray.fromObject("['json','is','easy']").toString());
Copier après la connexion
    fail(JSONObject.fromObject("{'json':'is easy'}").toString());
Copier après la connexion
    fail(JSONSerializer.toJSON("['json','is','easy']").toString());
Copier après la connexion
    fail("==============Java JSONObject >>> JSON ==================");
Copier après la connexion
    jsonObject = new JSONObject()
Copier après la connexion
        .element("string", "JSON")
Copier après la connexion
        .element("integer", "1")
Copier après la connexion
        .element("double", "2.0")
Copier après la connexion
        .element("boolean", "true");
Copier après la connexion
    fail(JSONSerializer.toJSON(jsonObject).toString());
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("==============Java JSONArray >>> JSON ==================");
Copier après la connexion
    jsonArray = new JSONArray()
Copier après la connexion
        .element( "JSON" )
Copier après la connexion
        .element( "1" )
Copier après la connexion
        .element( "2.0" )
Copier après la connexion
        .element( "true" );
Copier après la connexion
    fail(JSONSerializer.toJSON(jsonArray).toString());
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("==============Java JSONArray JsonConfig#setArrayMode >>> JSON ==================");
Copier après la connexion
    List input = new ArrayList();
Copier après la connexion
    input.add("JSON");
Copier après la connexion
    input.add("1");
Copier après la connexion
    input.add("2.0");
Copier après la connexion
    input.add("true");
Copier après la connexion
    JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input );
Copier après la connexion
    JsonConfig jsonConfig = new JsonConfig();
Copier après la connexion
Copier après la connexion
    jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );
Copier après la connexion
    Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
Copier après la connexion
    System.out.println(output[0]);
Copier après la connexion
    <br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("==============Java JSONFunction >>> JSON ==================");
Copier après la connexion
    String str = "{'func': function( param ){ doSomethingWithParam(param); }}";
Copier après la connexion
    JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str);
Copier après la connexion
    JSONFunction func = (JSONFunction) jsonObject.get("func");
Copier après la connexion
    fail(func.getParams()[0]);
Copier après la connexion
    fail(func.getText() );
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行后结果如下:


1

==============Java StringArray >>> JSON Array ==================

Copier après la connexion
["a","b","c"]
Copier après la connexion
["a","b","c"]
Copier après la connexion
==============Java boolean Array >>> JSON Array ==================
Copier après la connexion
[true,false,true]
Copier après la connexion
[true,false,true]
Copier après la connexion
==============Java Object Array >>> JSON Array ==================
Copier après la connexion
[1,"a",true,"A",["a","b","c"],[true,false,true]]
Copier après la connexion
[1,"a",true,"A",["a","b","c"],[true,false,true]]
Copier après la connexion
==============Java String >>> JSON ==================
Copier après la connexion
["json","is","easy"]
Copier après la connexion
Copier après la connexion
{"json":"is easy"}
Copier après la connexion
["json","is","easy"]
Copier après la connexion
Copier après la connexion
==============Java JSONObject >>> JSON ==================
Copier après la connexion
{"string":"JSON","integer":"1","double":"2.0","boolean":"true"}
Copier après la connexion
==============Java JSONArray >>> JSON ==================
Copier après la connexion
["JSON","1","2.0","true"]
Copier après la connexion
==============Java JSONArray JsonConfig#setArrayMode >>> JSON ==================
Copier après la connexion
JSON
Copier après la connexion
==============Java JSONFunction >>> JSON ==================
Copier après la connexion
param
Copier après la connexion
doSomethingWithParam(param);
Copier après la connexion

这里还有一个JSONFunction的对象,可以转换JavaScript的function。可以获取方法参数和方法体。同时,还可以用JSONObject、JSONArray构建Java对象,完成Java对象到JSON字符串的转换。

三、 JSON对象反序列化成Java对象

1、 将json字符串转成Java对象


1

private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"}," +

Copier après la connexion
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
Copier après la connexion
/**
Copier après la connexion
 * <b>function:</b>将json字符串转化为java对象
Copier après la connexion
 * @author hoojo
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 * @createDate Nov 28, 2010 3:01:16 PM
Copier après la connexion
 */
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void readJSON2Bean() {
Copier après la connexion
    fail("==============JSON Object String >>> Java Bean ==================");
Copier après la connexion
    jsonObject = JSONObject.fromObject(json);
Copier après la connexion
    Student stu = (Student) JSONObject.toBean(jsonObject, Student.class);
Copier après la connexion
    fail(stu.toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行后,结果如下:


1

==============JSON Object String >>> Java Bean ==================

Copier après la connexion

1

tom#22#chian#2010-11-22#email@123.com

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

2、 将json字符串转换成动态Java对象(MorphDynaBean)


1

private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void readJSON2DynaBean() {
Copier après la connexion
    try {
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail("==============JSON Object String >>> Java MorphDynaBean ==================");
Copier après la connexion
        JSON jo = JSONSerializer.toJSON(json);
Copier après la connexion
        Object o = JSONSerializer.toJava(jo);//MorphDynaBean
Copier après la connexion
        fail(PropertyUtils.getProperty(o, "address").toString());
Copier après la connexion
        jsonObject = JSONObject.fromObject(json);
Copier après la connexion
Copier après la connexion
        fail(jsonObject.getString("email"));
Copier après la connexion
        o = JSONSerializer.toJava(jsonObject);//MorphDynaBean
Copier après la connexion
        fail(PropertyUtils.getProperty(o, "name").toString());
Copier après la connexion
    } catch (IllegalAccessException e) {
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    } catch (InvocationTargetException e) {
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    } catch (NoSuchMethodException e) {
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

转换后的对象Object是一个MorphDynaBean的动态JavaBean,通过PropertyUtils可以获得指定的属性的值。

运行后结果如下:


1

==============JSON Object String >>> Java MorphDynaBean =============

Copier après la connexion

1

chian

Copier après la connexion

1

email@123.com

Copier après la connexion

1

tom

Copier après la connexion

3、 将json字符串转成Java的Array数组


1

private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void readJSON2Array() {
Copier après la connexion
    try {
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail("==============JSON Arry String >>> Java Array ==================");
Copier après la connexion
        json = "[" + json + "]";
Copier après la connexion
Copier après la connexion
Copier après la connexion
        jsonArray = JSONArray.fromObject(json);
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail("#%%%" + jsonArray.get(0).toString());
Copier après la connexion
        Object[] os = jsonArray.toArray();
Copier après la connexion
        System.out.println(os.length);
Copier après la connexion
        <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail(JSONArray.fromObject(json).join(""));
Copier après la connexion
        fail(os[0].toString());
Copier après la connexion
        Student[] stus = (Student[]) JSONArray.toArray(jsonArray, Student.class);
Copier après la connexion
        System.out.println(stus.length);
Copier après la connexion
        System.out.println(stus[0]);
Copier après la connexion
    } catch (Exception e) {
Copier après la connexion
Copier après la connexion
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行的结果如下:


1

==============JSON Arry String >>> Java Array ==================

Copier après la connexion

1

#%%%{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}

Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}

Copier après la connexion
Copier après la connexion

1

{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}

Copier après la connexion
Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

tom#22#chian#2010-11-22#email@123.com

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

4、 将JSON字符串转成Java的List集合


1

private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void readJSON2List() {
Copier après la connexion
    try {
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail("==============JSON Arry String >>> Java List ==================");
Copier après la connexion
        json = "[" + json + "]";
Copier après la connexion
Copier après la connexion
Copier après la connexion
        jsonArray = JSONArray.fromObject(json);
Copier après la connexion
Copier après la connexion
Copier après la connexion
        List<Student> list = JSONArray.toList(jsonArray, Student.class);
Copier après la connexion
        System.out.println(list.size());
Copier après la connexion
Copier après la connexion
        System.out.println(list.get(0));
Copier après la connexion
        <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
        list = JSONArray.toList(jsonArray);
Copier après la connexion
        System.out.println(list.size());
Copier après la connexion
Copier après la connexion
        System.out.println(list.get(0));//MorphDynaBean
Copier après la connexion
    } catch (Exception e) {
Copier après la connexion
Copier après la connexion
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行后结果如下:


1

==============JSON Arry String >>> Java List ==================

Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

tom#22#chian#2010-11-22#email@123.com

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

net.sf.ezmorph.bean.MorphDynaBean@141b571[

Copier après la connexion

1

{id=22, birthday=net.sf.ezmorph.bean.MorphDynaBean@b23210[

Copier après la connexion

1

{birthday=2010-11-22}

Copier après la connexion

1

], address=chian, email=email@123.com, name=tom}

Copier après la connexion

1

]

Copier après la connexion

5、 将json字符串转换成Collection接口


1

private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
 <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void readJSON2Collection() {
Copier après la connexion
    try {
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
        fail("==============JSON Arry String >>> Java Collection ==================");
Copier après la connexion
        json = "[" + json + "]";
Copier après la connexion
Copier après la connexion
Copier après la connexion
        jsonArray = JSONArray.fromObject(json);
Copier après la connexion
Copier après la connexion
Copier après la connexion
        Collection<Student> con = JSONArray.toCollection(jsonArray, Student.class);
Copier après la connexion
        System.out.println(con.size());
Copier après la connexion
        Object[] stt = con.toArray();
Copier après la connexion
        System.out.println(stt.length);
Copier après la connexion
        fail(stt[0].toString());
Copier après la connexion
        <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
    } catch (Exception e) {
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
    }
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

刚才上面的将json转换成list提示该方法过时,这里有toCollection,可以用此方法代替toList方法;运行后结果如下:


1

==============JSON Arry String >>> Java Collection ==================

Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

1

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

1

tom#22#chian#2010-11-22#email@123.com

Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

6、 将json字符串转换成Map集合


1

@Test

Copier après la connexion
Copier après la connexion
public void readJSON2Map() {
Copier après la connexion
    try {
Copier après la connexion
        fail("==============JSON Arry String >>> Java Map ==================");
Copier après la connexion
        json = "{\"arr\":[\"a\",\"b\"],\"A\":{\"address\":\"address\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
Copier après la connexion
        "\"email\":\"email\",\"id\":1,\"name\":\"jack\"},\"int\":1,"+
Copier après la connexion
        "\"B\":{\"address\":\"address\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
Copier après la connexion
        "\"email\":\"email\",\"id\":1,\"name\":\"jack\"},\"name\":\"json\",\"bool\":true}";
Copier après la connexion
        jsonObject = JSONObject.fromObject(json);
Copier après la connexion
Copier après la connexion
        Map<String, Class<?>> clazzMap = new HashMap<String, Class<?>>();
Copier après la connexion
        clazzMap.put("arr", String[].class);
Copier après la connexion
        clazzMap.put("A", Student.class);
Copier après la connexion
        clazzMap.put("B", Student.class);
Copier après la connexion
        Map<String, ?> mapBean = (Map) JSONObject.toBean(jsonObject, Map.class, clazzMap);
Copier après la connexion
        System.out.println(mapBean);
Copier après la connexion
        <br/>
Copier après la connexion
        Set<String> set = mapBean.keySet();
Copier après la connexion
        Iterator<String> iter = set.iterator();
Copier après la connexion
        while (iter.hasNext()) {
Copier après la connexion
            String key = iter.next();
Copier après la connexion
            fail(key + ":" + mapBean.get(key).toString());
Copier après la connexion
        }
Copier après la connexion
    } catch (Exception e) {
Copier après la connexion
Copier après la connexion
Copier après la connexion
        e.printStackTrace();
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
    }
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

运行后结果如下:


1

==============JSON Arry String >>> Java Map ==================

Copier après la connexion

1

{A=jack#1#address#2010-11-22#email, arr=[a, b], B=jack#1#address#2010-11-22#email, int=1, name=json, bool=true}

Copier après la connexion

1

A:jack#1#address#2010-11-22#email

Copier après la connexion

1

arr:[a, b]

Copier après la connexion

1

B:jack#1#address#2010-11-22#email

Copier après la connexion

1

int:1

Copier après la connexion

1

name:json

Copier après la connexion

1

bool:true

Copier après la connexion

四、 JSON-libXML的支持

1、 将Java对象到XML


1

/*============================Java Object >>>>> XML ==========================*/

Copier après la connexion
/**
Copier après la connexion
Copier après la connexion
 * <b>function:</b> 转换Java对象到XML
Copier après la connexion
 * 需要额外的jar包:xom.jar
Copier après la connexion
 * @author hoojo
Copier après la connexion
 * @createDate Nov 28, 2010 2:39:55 PM
Copier après la connexion
 */
Copier après la connexion
@Test
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
public void writeObject2XML() {
Copier après la connexion
    XMLSerializer xmlSerializer = new XMLSerializer();
Copier après la connexion
    fail("==============Java String Array >>> XML ==================");
Copier après la connexion
Copier après la connexion
    //xmlSerializer.setElementName("bean");
Copier après la connexion
    fail(xmlSerializer.write(JSONArray.fromObject(bean)));
Copier après la connexion
    String[] sa = {"a", "b", "c"};
Copier après la connexion
    fail("==============Java String Array >>> XML ==================");
Copier après la connexion
Copier après la connexion
    fail(xmlSerializer.write(JSONArray.fromObject(sa)));
Copier après la connexion
    fail("==============Java boolean Array >>> XML ==================");
Copier après la connexion
    boolean[] bo = { true, false, true };
Copier après la connexion
    fail(xmlSerializer.write(JSONArray.fromObject(bo)));
Copier après la connexion
    fail(xmlSerializer.write(JSONSerializer.toJSON(bo)));
Copier après la connexion
    Object[] o = { 1, "a", true, &#39;A&#39;, sa, bo };
Copier après la connexion
Copier après la connexion
    fail("==============Java Object Array >>> JSON Array ==================");
Copier après la connexion
Copier après la connexion
    fail(xmlSerializer.write(JSONArray.fromObject(o)));
Copier après la connexion
    fail(xmlSerializer.write(JSONSerializer.toJSON(o)));
Copier après la connexion
    fail("==============Java String >>> JSON ==================");
Copier après la connexion
Copier après la connexion
    fail(xmlSerializer.write(JSONArray.fromObject("[&#39;json&#39;,&#39;is&#39;,&#39;easy&#39;]")).toString());
Copier après la connexion
    fail(xmlSerializer.write(JSONObject.fromObject("{&#39;json&#39;:&#39;is easy&#39;}")).toString());
Copier après la connexion
    fail(xmlSerializer.write(JSONSerializer.toJSON("[&#39;json&#39;,&#39;is&#39;,&#39;easy&#39;]")).toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

主要运用的是XMLSerializer的write方法,这个方法可以完成java对象到xml的转换,不过你很容易就可以看到这个xml序列化对象,需要先将java对象转成json对象,然后再将json转换吃xml文档。

运行后结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

==============Java String Array >>> XML ==================

<?xml version="1.0" encoding="UTF-8"?>

<a><e class="object">

<address type="string">address</address><birthday class="object"><birthday type="string">2010-11-22</birthday></birthday>

<email type="string">email</email><id type="number">1</id><name type="string">haha</name>

</e></a>

  

==============Java String Array >>> XML ==================

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="string">a</e><e type="string">b</e><e type="string">c</e></a>

  

==============Java boolean Array >>> XML ==================

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="boolean">true</e><e type="boolean">false</e><e type="boolean">true</e></a>

  

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="boolean">true</e><e type="boolean">false</e><e type="boolean">true</e></a>

  

==============Java Object Array >>> JSON Array ==================

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="number">1</e><e type="string">a</e><e type="boolean">true</e><e type="string">A</e><e class="array">

<e type="string">a</e><e type="string">b</e><e type="string">c</e></e><e class="array"><e type="boolean">true</e>

<e type="boolean">false</e><e type="boolean">true</e></e></a>

  

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="number">1</e><e type="string">a</e><e type="boolean">true</e><e type="string">A</e><e class="array">

<e type="string">a</e><e type="string">b</e><e type="string">c</e></e><e class="array"><e type="boolean">true</e>

<e type="boolean">false</e><e type="boolean">true</e></e></a>

  

==============Java String >>> JSON ==================

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="string">json</e><e type="string">is</e><e type="string">easy</e></a>

  

<?xml version="1.0" encoding="UTF-8"?>

<o><json type="string">is easy</json></o>

  

<?xml version="1.0" encoding="UTF-8"?>

<a><e type="string">json</e><e type="string">is</e><e type="string">easy</e></a>

Copier après la connexion

上面的节点名称有点乱,你可以通过setElementName设置节点名称

2、 将XML转换成Java对象


1

/*============================XML String >>>>> Java Object ==========================*/

Copier après la connexion
/**
Copier après la connexion
Copier après la connexion
 * <b>function:</b>转换xml文档到java对象
Copier après la connexion
 * @author hoojo
Copier après la connexion
 * @createDate Nov 28, 2010 3:00:27 PM
Copier après la connexion
 */
Copier après la connexion
@Test
Copier après la connexion
public void readXML2Object() {
Copier après la connexion
    XMLSerializer xmlSerializer = new XMLSerializer();
Copier après la connexion
    fail("============== XML >>>> Java String Array ==================");
Copier après la connexion
    String[] sa = {"a", "b", "c"};
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONArray.fromObject(sa)));
Copier après la connexion
    fail(jsonArray.toString());
Copier après la connexion
    <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
    String[] s = (String[]) JSONArray.toArray(jsonArray, String.class);
Copier après la connexion
    fail(s[0].toString());
Copier après la connexion
Copier après la connexion
    <br/>
Copier après la connexion
Copier après la connexion
    fail("============== XML >>>> Java boolean Array ==================");
Copier après la connexion
    boolean[] bo = { true, false, true };
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONArray.fromObject(bo)));
Copier après la connexion
    bo = (boolean[]) JSONArray.toArray(jsonArray, boolean.class);
Copier après la connexion
    fail(bo.toString());
Copier après la connexion
    System.out.println(bo[0]);
Copier après la connexion
    <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONSerializer.toJSON(bo)));
Copier après la connexion
    bo = (boolean[]) JSONArray.toArray(jsonArray, boolean.class);
Copier après la connexion
    fail(bo.toString());
Copier après la connexion
    System.out.println(bo[0]);
Copier après la connexion
    <br/>
Copier après la connexion
Copier après la connexion
    fail("==============Java Object Array >>> JSON Array ==================");
Copier après la connexion
Copier après la connexion
    Object[] o = { 1, "a", true, &#39;A&#39;, sa, bo };
Copier après la connexion
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONArray.fromObject(o)));
Copier après la connexion
    System.out.println(jsonArray.getInt(0));
Copier après la connexion
    System.out.println(jsonArray.get(1));
Copier après la connexion
    System.out.println(jsonArray.getBoolean(2));
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONSerializer.toJSON(o)));
Copier après la connexion
    System.out.println(jsonArray.get(4));
Copier après la connexion
    System.out.println(jsonArray.getJSONArray(5).get(0));
Copier après la connexion
    System.out.println(jsonArray.get(5));
Copier après la connexion
    <br/>
Copier après la connexion
Copier après la connexion
Copier après la connexion
    fail("==============Java String >>> JSON ==================");
Copier après la connexion
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONArray.fromObject("[&#39;json&#39;,&#39;is&#39;,&#39;easy&#39;]")).toString());
Copier après la connexion
    s = (String[]) JSONArray.toArray(jsonArray, String.class);
Copier après la connexion
Copier après la connexion
    fail(s[0].toString());
Copier après la connexion
Copier après la connexion
    jsonObject = (JSONObject) xmlSerializer.read(xmlSerializer.write(JSONObject.fromObject("{&#39;json&#39;:&#39;is easy&#39;}")).toString());
Copier après la connexion
    Object obj = JSONObject.toBean(jsonObject);
Copier après la connexion
    System.out.println(obj);
Copier après la connexion
    jsonArray = (JSONArray) xmlSerializer.read(xmlSerializer.write(JSONSerializer.toJSON("[&#39;json&#39;,&#39;is&#39;,&#39;easy&#39;]")).toString());
Copier après la connexion
    s = (String[]) JSONArray.toArray(jsonArray, String.class);
Copier après la connexion
Copier après la connexion
    fail(s[1].toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

主要运用到XMLSerializer的read方法,将xml内容读取后,转换成Java对象。运行后结果如下:


1

============== XML >>>> Java String Array ==================

Copier après la connexion
["a","b","c"]
Copier après la connexion
a
Copier après la connexion
Copier après la connexion
============== XML >>>> Java boolean Array ==================
Copier après la connexion
[Z@15856a5
Copier après la connexion
true
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
[Z@79ed7f
Copier après la connexion
true
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
==============Java Object Array >>> JSON Array ==================
Copier après la connexion
1
Copier après la connexion
a
Copier après la connexion
Copier après la connexion
true
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
["a","b","c"]
Copier après la connexion
true
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
["true","false","true"]
Copier après la connexion
==============Java String >>> JSON ==================
Copier après la connexion
json
Copier après la connexion
net.sf.ezmorph.bean.MorphDynaBean@c09554[
Copier après la connexion
  {json=is easy}
Copier après la connexion
]
Copier après la connexion
is
Copier après la connexion

3、 将xml的字符串内容,转换成Java的Array对象


1

@Test

Copier après la connexion
Copier après la connexion
public void testReadXml2Array() {
Copier après la connexion
    String str = "<a class=\"array\">" +
Copier après la connexion
          "<e type=\"function\" params=\"i,j\">" +
Copier après la connexion
          "return matrix[i][j];" +
Copier après la connexion
          "</e>" +
Copier après la connexion
        "</a>";
Copier après la connexion
    JSONArray json = (JSONArray) new XMLSerializer().read(str);
Copier après la connexion
    fail(json.toString());
Copier après la connexion
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

上面是一段xml字符串格式的文档,将其转换为JSONArray对象。转换后结果如下:


1

[function(i,j){ return matrix[i][j]; }]

Copier après la connexion

就是一个数组;

 以上就是JSON-lib框架,转换JSON、XML不再困难的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? La vitesse de conversion est-elle rapide lors de la conversion du XML en PDF sur le téléphone mobile? Apr 02, 2025 pm 10:09 PM

La vitesse du XML mobile à PDF dépend des facteurs suivants: la complexité de la structure XML. Méthode de conversion de configuration du matériel mobile (bibliothèque, algorithme) Méthodes d'optimisation de la qualité du code (sélectionnez des bibliothèques efficaces, optimiser les algorithmes, les données de cache et utiliser le multi-threading). Dans l'ensemble, il n'y a pas de réponse absolue et elle doit être optimisée en fonction de la situation spécifique.

Comment convertir les fichiers XML en PDF sur votre téléphone? Comment convertir les fichiers XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:12 PM

Il est impossible de terminer la conversion XML à PDF directement sur votre téléphone avec une seule application. Il est nécessaire d'utiliser les services cloud, qui peuvent être réalisés via deux étapes: 1. Convertir XML en PDF dans le cloud, 2. Accédez ou téléchargez le fichier PDF converti sur le téléphone mobile.

Comment convertir XML en PDF sur votre téléphone? Comment convertir XML en PDF sur votre téléphone? Apr 02, 2025 pm 10:18 PM

Il n'est pas facile de convertir XML en PDF directement sur votre téléphone, mais il peut être réalisé à l'aide des services cloud. Il est recommandé d'utiliser une application mobile légère pour télécharger des fichiers XML et recevoir des PDF générés, et de les convertir avec des API Cloud. Les API Cloud utilisent des services informatiques sans serveur et le choix de la bonne plate-forme est crucial. La complexité, la gestion des erreurs, la sécurité et les stratégies d'optimisation doivent être prises en compte lors de la gestion de l'analyse XML et de la génération de PDF. L'ensemble du processus nécessite que l'application frontale et l'API back-end fonctionnent ensemble, et il nécessite une certaine compréhension d'une variété de technologies.

Comment convertir XML en images Comment convertir XML en images Apr 03, 2025 am 07:39 AM

XML peut être converti en images en utilisant un convertisseur XSLT ou une bibliothèque d'images. Convertisseur XSLT: Utilisez un processeur XSLT et une feuille de style pour convertir XML en images. Bibliothèque d'images: utilisez des bibliothèques telles que PIL ou ImageMagick pour créer des images à partir de données XML, telles que des formes de dessin et du texte.

Comment convertir XML en mot Comment convertir XML en mot Apr 03, 2025 am 08:15 AM

Il existe trois façons de convertir XML en Word: utilisez Microsoft Word, utilisez un convertisseur XML ou utilisez un langage de programmation.

Outil de mise en forme XML recommandé Outil de mise en forme XML recommandé Apr 02, 2025 pm 09:03 PM

Les outils de mise en forme XML peuvent taper le code en fonction des règles pour améliorer la lisibilité et la compréhension. Lors de la sélection d'un outil, faites attention aux capacités de personnalisation, en gérant des circonstances spéciales, des performances et de la facilité d'utilisation. Les types d'outils couramment utilisés incluent des outils en ligne, des plug-ins IDE et des outils de ligne de commande.

Comment ouvrir web.xml Comment ouvrir web.xml Apr 03, 2025 am 06:51 AM

Pour ouvrir un fichier web.xml, vous pouvez utiliser les méthodes suivantes: Utilisez un éditeur de texte (tel que le bloc-notes ou TextEdit) pour modifier les commandes à l'aide d'un environnement de développement intégré (tel qu'Eclipse ou NetBeans) (Windows: Notepad web.xml; Mac / Linux: Open -A TextEdit web.xml)

Comment changer le format de XML Comment changer le format de XML Apr 03, 2025 am 08:42 AM

Il existe plusieurs façons de modifier les formats XML: édition manuellement avec un éditeur de texte tel que le bloc-notes; Formatage automatique avec des outils de mise en forme XML en ligne ou de bureau tels que XMLBeautifier; Définir les règles de conversion à l'aide d'outils de conversion XML tels que XSLT; ou analyser et fonctionner à l'aide de langages de programmation tels que Python. Soyez prudent lorsque vous modifiez et sauvegardez les fichiers d'origine.

See all articles