首页 后端开发 XML/RSS教程 JSON-lib框架,转换JSON、XML不再困难

JSON-lib框架,转换JSON、XML不再困难

Feb 18, 2017 pm 03:10 PM

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。

一、 准备工作 

 

1、 首先要去官方下载json-lib工具包

下载地址:

http://www.php.cn/

目前最新的是2.4的版本,本示例中使用的是v2.3;json-lib还需要以下依赖包:

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

官方网址:http://www.php.cn/

然后在工程中添加如下jar包:

clip_image002

当然你也可以用2.4的json-lib库

你可以在这里看看官方提供的示例:

http://www.php.cn/

由于本次介绍的示例需要junit工具,所以你还需要添加junit的jar文件,版本是4.8.2版本的,下载地址:http://www.php.cn/

如果你还不了解JSON是什么?那么你应该可以看看http://www.php.cn/

2、 要转换的JavaBean的代码如下:


package com.hoo.entity;
登录后复制
登录后复制
 <br>
登录后复制
登录后复制
登录后复制
登录后复制
public class Student {
登录后复制
    private int id;
登录后复制
    private String name;
登录后复制
    private String email;
登录后复制
    private String address;
登录后复制
    private Birthday birthday;
登录后复制
 <br>
登录后复制
登录后复制
登录后复制
登录后复制
    //setter、getter
登录后复制
登录后复制
    public String toString() {
登录后复制
        return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;
登录后复制
    }
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
 <br>
登录后复制
登录后复制
登录后复制
登录后复制

Birthday.java


package com.hoo.entity;
登录后复制
登录后复制
 <br>
登录后复制
登录后复制
登录后复制
登录后复制
public class Birthday {
登录后复制
    private String birthday;
登录后复制
    <br>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    public Birthday(String birthday) {
登录后复制
        super();
登录后复制
        this.birthday = birthday;
登录后复制
    }
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    //setter、getter
登录后复制
登录后复制
    public Birthday() {}
登录后复制
    <br>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    @Override
登录后复制
    public String toString() {
登录后复制
        return this.birthday;
登录后复制
    }
登录后复制
}
登录后复制
登录后复制
登录后复制

注意,上面的getter、setter方法省略了,自己构建下。

3、 新建JsonlibTest测试类,基本代码如下:


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

上面的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中添加如下代码:


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

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

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

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

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


==============Java Bean >>> JSON Object==================
登录后复制
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}
登录后复制
登录后复制
==============Java Bean >>> JSON Array==================
登录后复制
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}]
登录后复制
==============Java Bean >>> JSON Object ==================
登录后复制
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"haha"}
登录后复制
登录后复制
========================JsonConfig========================
登录后复制
key:birthday
登录后复制
{"address":"address","birthday":"2010-11-22##修改过的日期","email":"email","id":1,"name":"haha"}
登录后复制
2010-11-22##修改过的日期
登录后复制
haha#1#address#null#email
登录后复制
#####################JsonPropertyFilter############################
登录后复制
haha#1#address#2010-11-22#email%%%address--address
登录后复制
haha#1#address#2010-11-22#email%%%birthday--2010-11-22
登录后复制
haha#1#address#2010-11-22#email%%%email--email
登录后复制
haha#1#address#2010-11-22#email%%%id--1
登录后复制
haha#1#address#2010-11-22#email%%%name--haha
登录后复制
{"address":"address","email":"email","id":1,"name":"haha"}
登录后复制
#################JavaPropertyFilter##################
登录后复制
address@address#null#0#null#null#null
登录后复制
birthday@2010-11-22##修改过的日期#null#0#address#null#null
登录后复制
email@email#null#0#address#null#null
登录后复制
id@1#null#0#address#null#null
登录后复制
name@haha#null#0#address#null#null
登录后复制
Student:haha#0#address#null#null
登录后复制

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


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

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


==============Java List >>> JSON Array==================
登录后复制
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},
登录后复制
登录后复制
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"}]
登录后复制
登录后复制
[{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},
登录后复制
登录后复制
{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"}]
登录后复制
登录后复制

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

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


/**
登录后复制
登录后复制
登录后复制
 * <b>function:</b>转Java Map对象到JSON
登录后复制
 * @author hoojo
登录后复制
登录后复制
登录后复制
登录后复制
 * @createDate Nov 28, 2010 2:37:35 PM
登录后复制
 */
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
public void writeMap2JSON() {
登录后复制
    Map<String, Object> map = new HashMap<String, Object>();
登录后复制
    map.put("A", bean);
登录后复制
    <br>
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    bean.setName("jack");
登录后复制
登录后复制
    map.put("B", bean);
登录后复制
    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]; }");
登录后复制
    fail("==============Java Map >>> JSON Object==================");
登录后复制
登录后复制
    fail(JSONObject.fromObject(map).toString());
登录后复制
    fail("==============Java Map >>> JSON Array ==================");
登录后复制
    fail(JSONArray.fromObject(map).toString());
登录后复制
    fail("==============Java Map >>> JSON Object==================");
登录后复制
登录后复制
    fail(JSONSerializer.toJSON(map).toString());
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

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

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


==============Java Map >>> JSON Object==================
登录后复制
{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
登录后复制
登录后复制
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
登录后复制
登录后复制
登录后复制
"func":function(i){ return this.arr[i]; },"bool":true}
登录后复制
登录后复制
==============Java Map >>> JSON Array ==================
登录后复制
[{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
登录后复制
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
登录后复制
登录后复制
登录后复制
"func":function(i){ return this.arr[i]; },"bool":true}]
登录后复制
==============Java Map >>> JSON Object==================
登录后复制
{"arr":["a","b"],"A":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"int":1,
登录后复制
登录后复制
"B":{"address":"address","birthday":{"birthday":"2010-11-22"},"email":"email","id":1,"name":"jack"},"name":"json",
登录后复制
登录后复制
登录后复制
"func":function(i){ return this.arr[i]; },"bool":true}
登录后复制
登录后复制

4、 将更多类型转换成JSON


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

运行后结果如下:


==============Java StringArray >>> JSON Array ==================
登录后复制
["a","b","c"]
登录后复制
["a","b","c"]
登录后复制
==============Java boolean Array >>> JSON Array ==================
登录后复制
[true,false,true]
登录后复制
[true,false,true]
登录后复制
==============Java Object Array >>> JSON Array ==================
登录后复制
[1,"a",true,"A",["a","b","c"],[true,false,true]]
登录后复制
[1,"a",true,"A",["a","b","c"],[true,false,true]]
登录后复制
==============Java String >>> JSON ==================
登录后复制
["json","is","easy"]
登录后复制
登录后复制
{"json":"is easy"}
登录后复制
["json","is","easy"]
登录后复制
登录后复制
==============Java JSONObject >>> JSON ==================
登录后复制
{"string":"JSON","integer":"1","double":"2.0","boolean":"true"}
登录后复制
==============Java JSONArray >>> JSON ==================
登录后复制
["JSON","1","2.0","true"]
登录后复制
==============Java JSONArray JsonConfig#setArrayMode >>> JSON ==================
登录后复制
JSON
登录后复制
==============Java JSONFunction >>> JSON ==================
登录后复制
param
登录后复制
doSomethingWithParam(param);
登录后复制

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

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

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


private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"}," +
登录后复制
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
登录后复制
/**
登录后复制
 * <b>function:</b>将json字符串转化为java对象
登录后复制
 * @author hoojo
登录后复制
登录后复制
登录后复制
登录后复制
 * @createDate Nov 28, 2010 3:01:16 PM
登录后复制
 */
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
public void readJSON2Bean() {
登录后复制
    fail("==============JSON Object String >>> Java Bean ==================");
登录后复制
    jsonObject = JSONObject.fromObject(json);
登录后复制
    Student stu = (Student) JSONObject.toBean(jsonObject, Student.class);
登录后复制
    fail(stu.toString());
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

运行后,结果如下:


==============JSON Object String >>> Java Bean ==================
登录后复制
tom#22#chian#2010-11-22#email@123.com
登录后复制
登录后复制
登录后复制
登录后复制

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


private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
登录后复制
登录后复制
登录后复制
登录后复制
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
登录后复制
登录后复制
登录后复制
登录后复制
 <br/>
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
public void readJSON2DynaBean() {
登录后复制
    try {
登录后复制
登录后复制
登录后复制
登录后复制
        fail("==============JSON Object String >>> Java MorphDynaBean ==================");
登录后复制
        JSON jo = JSONSerializer.toJSON(json);
登录后复制
        Object o = JSONSerializer.toJava(jo);//MorphDynaBean
登录后复制
        fail(PropertyUtils.getProperty(o, "address").toString());
登录后复制
        jsonObject = JSONObject.fromObject(json);
登录后复制
登录后复制
        fail(jsonObject.getString("email"));
登录后复制
        o = JSONSerializer.toJava(jsonObject);//MorphDynaBean
登录后复制
        fail(PropertyUtils.getProperty(o, "name").toString());
登录后复制
    } catch (IllegalAccessException e) {
登录后复制
        e.printStackTrace();
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    } catch (InvocationTargetException e) {
登录后复制
        e.printStackTrace();
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    } catch (NoSuchMethodException e) {
登录后复制
        e.printStackTrace();
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    }
登录后复制
登录后复制
登录后复制
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

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

运行后结果如下:


==============JSON Object String >>> Java MorphDynaBean =============
登录后复制
chian
登录后复制
email@123.com
登录后复制
tom
登录后复制

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


private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
登录后复制
登录后复制
登录后复制
登录后复制
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
登录后复制
登录后复制
登录后复制
登录后复制
 <br/>
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
public void readJSON2Array() {
登录后复制
    try {
登录后复制
登录后复制
登录后复制
登录后复制
        fail("==============JSON Arry String >>> Java Array ==================");
登录后复制
        json = "[" + json + "]";
登录后复制
登录后复制
登录后复制
        jsonArray = JSONArray.fromObject(json);
登录后复制
登录后复制
登录后复制
        fail("#%%%" + jsonArray.get(0).toString());
登录后复制
        Object[] os = jsonArray.toArray();
登录后复制
        System.out.println(os.length);
登录后复制
        <br/>
登录后复制
登录后复制
登录后复制
        fail(JSONArray.fromObject(json).join(""));
登录后复制
        fail(os[0].toString());
登录后复制
        Student[] stus = (Student[]) JSONArray.toArray(jsonArray, Student.class);
登录后复制
        System.out.println(stus.length);
登录后复制
        System.out.println(stus[0]);
登录后复制
    } catch (Exception e) {
登录后复制
登录后复制
登录后复制
        e.printStackTrace();
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    }
登录后复制
登录后复制
登录后复制
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

运行的结果如下:


==============JSON Arry String >>> Java Array ==================
登录后复制
#%%%{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}
登录后复制
登录后复制
{"address":"chian","birthday":{"birthday":"2010-11-22"},"email":"email@123.com","id":22,"name":"tom"}
登录后复制
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
tom#22#chian#2010-11-22#email@123.com
登录后复制
登录后复制
登录后复制
登录后复制

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


private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
登录后复制
登录后复制
登录后复制
登录后复制
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
登录后复制
登录后复制
登录后复制
登录后复制
 <br/>
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
public void readJSON2List() {
登录后复制
    try {
登录后复制
登录后复制
登录后复制
登录后复制
        fail("==============JSON Arry String >>> Java List ==================");
登录后复制
        json = "[" + json + "]";
登录后复制
登录后复制
登录后复制
        jsonArray = JSONArray.fromObject(json);
登录后复制
登录后复制
登录后复制
        List<Student> list = JSONArray.toList(jsonArray, Student.class);
登录后复制
        System.out.println(list.size());
登录后复制
登录后复制
        System.out.println(list.get(0));
登录后复制
        <br/>
登录后复制
登录后复制
登录后复制
        list = JSONArray.toList(jsonArray);
登录后复制
        System.out.println(list.size());
登录后复制
登录后复制
        System.out.println(list.get(0));//MorphDynaBean
登录后复制
    } catch (Exception e) {
登录后复制
登录后复制
登录后复制
        e.printStackTrace();
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
    }
登录后复制
登录后复制
登录后复制
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

运行后结果如下:


==============JSON Arry String >>> Java List ==================
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
tom#22#chian#2010-11-22#email@123.com
登录后复制
登录后复制
登录后复制
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
net.sf.ezmorph.bean.MorphDynaBean@141b571[
登录后复制
  {id=22, birthday=net.sf.ezmorph.bean.MorphDynaBean@b23210[
登录后复制
  {birthday=2010-11-22}
登录后复制
], address=chian, email=email@123.com, name=tom}
登录后复制
]
登录后复制

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


private String json = "{\"address\":\"chian\",\"birthday\":{\"birthday\":\"2010-11-22\"},"+
登录后复制
登录后复制
登录后复制
登录后复制
        "\"email\":\"email@123.com\",\"id\":22,\"name\":\"tom\"}";
登录后复制
登录后复制
登录后复制
登录后复制
 <br/>
登录后复制
登录后复制
登录后复制
登录后复制
@Test
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
public void readJSON2Collection() {
登录后复制
    try {
登录后复制
登录后复制
登录后复制
登录后复制
        fail("==============JSON Arry String >>> Java Collection ==================");
登录后复制
        json = "[" + json + "]";
登录后复制
登录后复制
登录后复制
        jsonArray = JSONArray.fromObject(json);
登录后复制
登录后复制
登录后复制
        Collection<Student> con = JSONArray.toCollection(jsonArray, Student.class);
登录后复制
        System.out.println(con.size());
登录后复制
        Object[] stt = con.toArray();
登录后复制
        System.out.println(stt.length);
登录后复制
        fail(stt[0].toString());
登录后复制
        <br/>
登录后复制
登录后复制
登录后复制
    } catch (Exception e) {
登录后复制
        e.printStackTrace();
登录后复制
    }
登录后复制
}
登录后复制
登录后复制
登录后复制

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


==============JSON Arry String >>> Java Collection ==================
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
1
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
tom#22#chian#2010-11-22#email@123.com
登录后复制
登录后复制
登录后复制
登录后复制

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


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

运行后结果如下:


==============JSON Arry String >>> Java Map ==================
登录后复制
{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}
登录后复制
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
登录后复制

四、 JSON-libXML的支持

1、 将Java对象到XML


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

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

运行后结果如下:

==============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>
登录后复制

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

2、 将XML转换成Java对象


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

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


============== XML >>>> Java String Array ==================
登录后复制
["a","b","c"]
登录后复制
a
登录后复制
登录后复制
============== XML >>>> Java boolean Array ==================
登录后复制
[Z@15856a5
登录后复制
true
登录后复制
登录后复制
登录后复制
登录后复制
[Z@79ed7f
登录后复制
true
登录后复制
登录后复制
登录后复制
登录后复制
==============Java Object Array >>> JSON Array ==================
登录后复制
1
登录后复制
a
登录后复制
登录后复制
true
登录后复制
登录后复制
登录后复制
登录后复制
["a","b","c"]
登录后复制
true
登录后复制
登录后复制
登录后复制
登录后复制
["true","false","true"]
登录后复制
==============Java String >>> JSON ==================
登录后复制
json
登录后复制
net.sf.ezmorph.bean.MorphDynaBean@c09554[
登录后复制
  {json=is easy}
登录后复制
]
登录后复制
is
登录后复制

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


@Test
登录后复制
登录后复制
public void testReadXml2Array() {
登录后复制
    String str = "<a class=\"array\">" +
登录后复制
          "<e type=\"function\" params=\"i,j\">" +
登录后复制
          "return matrix[i][j];" +
登录后复制
          "</e>" +
登录后复制
        "</a>";
登录后复制
    JSONArray json = (JSONArray) new XMLSerializer().read(str);
登录后复制
    fail(json.toString());
登录后复制
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

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


[function(i,j){ return matrix[i][j]; }]
登录后复制

就是一个数组;

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


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

手机XML转PDF,转换速度快吗? 手机XML转PDF,转换速度快吗? Apr 02, 2025 pm 10:09 PM

手机XML转PDF的速度取决于以下因素:XML结构的复杂性手机硬件配置转换方法(库、算法)代码质量优化手段(选择高效库、优化算法、缓存数据、利用多线程)总体而言,没有绝对的答案,需要根据具体情况进行优化。

怎么在手机上把XML文件转换为PDF? 怎么在手机上把XML文件转换为PDF? Apr 02, 2025 pm 10:12 PM

不可能直接在手机上用单一应用完成 XML 到 PDF 的转换。需要使用云端服务,通过两步走的方式实现:1. 在云端转换 XML 为 PDF,2. 在手机端访问或下载转换后的 PDF 文件。

手机上如何将XML转换成PDF? 手机上如何将XML转换成PDF? Apr 02, 2025 pm 10:18 PM

直接在手机上将XML转换为PDF并不容易,但可以借助云端服务实现。推荐使用轻量级手机App上传XML文件并接收生成的PDF,配合云端API进行转换。云端API使用无服务器计算服务,选择合适的平台至关重要。处理XML解析和PDF生成时需要考虑复杂性、错误处理、安全性和优化策略。整个过程需要前端App与后端API协同工作,需要对多种技术有所了解。

xml格式化工具推荐 xml格式化工具推荐 Apr 02, 2025 pm 09:03 PM

XML格式化工具可以将代码按照规则排版,提高可读性和理解性。选择工具时,要注意自定义能力、对特殊情况的处理、性能和易用性。常用的工具类型包括在线工具、IDE插件和命令行工具。

有什么手机APP可以将XML转换成PDF? 有什么手机APP可以将XML转换成PDF? Apr 02, 2025 pm 08:54 PM

无法找到一款将 XML 直接转换为 PDF 的应用程序,因为它们是两种根本不同的格式。XML 用于存储数据,而 PDF 用于显示文档。要完成转换,可以使用编程语言和库,例如 Python 和 ReportLab,来解析 XML 数据并生成 PDF 文档。

web.xml怎么打开 web.xml怎么打开 Apr 03, 2025 am 06:51 AM

要打开 web.xml 文件,可以使用以下方法:使用文本编辑器(如记事本或 TextEdit)使用集成开发环境(如 Eclipse 或 NetBeans)使用命令行编辑命令(Windows:notepad web.xml;Mac/Linux:open -a TextEdit web.xml)

xml如何转化为word xml如何转化为word Apr 03, 2025 am 08:15 AM

有三种将 XML 转换为 Word 的方法:使用 Microsoft Word、使用 XML 转换器或使用编程语言。

xml格式怎么打开 xml格式怎么打开 Apr 02, 2025 pm 09:00 PM

用大多数文本编辑器即可打开XML文件;若需更直观的树状展示,可使用 XML 编辑器,如 Oxygen XML Editor 或 XMLSpy;在程序中处理 XML 数据则需使用编程语言(如 Python)与 XML 库(如 xml.etree.ElementTree)来解析。

See all articles