Java JSON数据操作

要使用JSON Processing API编译应用程序,请在maven项目中声明对json-api的依赖关系。
api依赖不允许您运行应用程序。

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.0</version>
</dependency>

对于非Maven项目,JSON处理API jar(http://search.maven.org/remotecontent?filepath=javax/json/javax.json-api/1.0/javax.json-api-1.0.jar)可以下载并包含在用于编译应用程序的类路径中。
要使用JSON Processing API运行应用程序,请在maven项目中声明对json-api实现的依赖。

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0.4</version>
</dependency>

对于非Maven项目,可以通过http://search.maven.org/remotecontent?filepath=org/glassfish/javax.json/1.0.4/ 下载JSON Processing RI jar并将其包含在类路径中以运行应用程序javax.json-1.0.4.jar。
GlassFish 4.0已经包括JSON实现。在web中不用再次包含实现的jar。
在开发应用程序期间声明具有提供作用域的json-api依赖关系。

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <scope>provided</scope>
    <version>1.0</version>
</dependency>

example 1
以下代码显示了如何使用JsonReader将JSON数据读取到JSON的ObjectModel。

import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonValue;

public class Main {
    public static void main(String[] args) {
        String personJSONData = 
            "  {" +
            "   \"name\": \"MarkYu\", " +
            "   \"age\" : 23, " +
            "   \"isMarried\" : false, " +
            "   \"address\": { " +
            "     \"street\": \"#13, WestStreet\", " +
            "     \"zipCode\": \"666666\" " +
            "   }, " +
            "   \"phoneNumbers\": [\"0838-888-8888\", \"0871-888-8888\"] " +
            " }";
        JsonReader reader = Json.createReader(new StringReader(personJSONData));       
        JsonObject personObject = reader.readObject();
        reader.close();    
        System.out.println("Name   : " + personObject.getString("name"));
        System.out.println("Age    : " + personObject.getInt("age"));
        System.out.println("Married: " + personObject.getBoolean("isMarried"));

        JsonObject addressObject = personObject.getJsonObject("address");
        System.out.println("Address: ");
        System.out.println(addressObject.getString("street"));
        System.out.println(addressObject.getString("zipCode"));
        System.out.println("Phone  : ");

        for (JsonValue jsonValue : phoneNumbersArray) {
            System.out.println(jsonValue.toString());
        }
    }
}

读取数组

JsonReader reader = Json.createReader(new StringReader(personJSONData));
JsonArray personArray = reader.readArray();//Read the JsonArray object
reader.close();
for (JsonValue jsonVal : personArray) {
    System.out.println(personObj.getValueType() + " - " 
    + ((JsonObject) personObj).getString("name"));
}

example 2
以下代码显示了如何使用JsonObjectBuilder和JsonArrayBuilder构建JSON对象

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;

public class Main {

    public static void main(String[] args) {
        JsonObject personObject = Json.createObjectBuilder()
                .add("name", "MarkYu")
                .add("age", 23)
                .add("isMarried", false)
                .add("address", 
                     Json.createObjectBuilder().add("street", "WestStreet")
                                               .add("city", "KunMing")
                                               .add("zipCode", "666666")
                                               .build()
                    )
                .add("phoneNumber", 
                     Json.createArrayBuilder().add("0871-000-0000")
                                              .add("0838-111-1111")
                                              .add("0830-111-1112")
                                              .build()
                    )
                .build();//important format

        System.out.println("Object: " + personObject);
    }
}

example 3
以下代码显示了如何使用JsonWriter序列化JSON对象。

import java.io.StringWriter;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;

public class Main {

    public static void main(String[] args) {
        JsonObject personObject = Json.createObjectBuilder()
                .add("name", "MarkYu")
                .add("age", 23)
                .add("isMarried", false)
                .add("address", 
                     Json.createObjectBuilder().add("street", "WestStreet")
                                               .add("city", "KunMing")
                                               .add("zipCode", "666666")
                                               .build()
                    )
                .add("phoneNumber", 
                     Json.createArrayBuilder().add("0871-000-0000")
                                              .add("0838-111-1111")
                                              .add("0830-111-1112")
                                              .build()
                    )
                .build();

        StringWriter stringWriter = new StringWriter();//stringWriter object
        JsonWriter writer = Json.createWriter(stringWriter);//object passing
        writer.writeObject(personObject);
        writer.close();
        System.out.println(stringWriter.getBuffer().toString());
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值