本文概述
JSON是一种轻量级的, 独立于语言的数据交换格式, 如今在每个可用的Web API上都在使用。如果你愿意在Java环境中处理此类数据, 我们将向你说明如何使用org.json包轻松实现。
1.包含org.json包
Java默认情况下不像PHP或其他语言那样提供任何集成的功能来解析或创建JSON, 相反, 你将需要依赖第三方库/包。在本教程中, 我们将使用org.json。该软件包中的文件在Java中实现JSON编码器/解码器。它还具有在JSON和XML, HTTP标头, Cookie和CDL之间转换的功能。这是参考实现。 Java中有大量的JSON包。也许有一天, Java社区将标准化一个。在此之前, 我们建议你使用org.json软件包, 它使事情变得非常简单。
你可以从maven存储库下载软件包的jar文件, 然后将其手动包含在你的项目中, 或者如果你的项目基于maven, 则可以编辑pom.xml文件并添加依赖项:
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
有关此软件包的更多信息, 请在此处访问Maven的官方存储库。包含库之后, 你将可以使用import org.json。*导入软件包。在你的代码中。
2.使用该库操作JSON
作为《我们的代码世界》中的每个教程, 你都将通过阅读并阅读一些示例来学习。在Java中使用JSON时, 我们将与你分享一些最常用的功能:
A.创建JSON对象
JSONObject类的put方法允许你使用对象的值定义一个新键:
package sandbox;
import org.json.*;
public class Sandbox {
/**
* Generating a JSON Object
*
* @param args
*/
public static void main(String[] args) {
JSONObject myObject = new JSONObject();
// Basic strings
myObject.put("name", "Carlos");
myObject.put("last_name", "Carlos");
// Primitive values
myObject.put("age", new Integer(21));
myObject.put("bank_account_balance", new Double(20.2));
myObject.put("is_developer", new Boolean(true));
// Key with array
double[] myList = {1.9, 2.9, 3.4, 3.5};
myObject.put("number_list", myList);
// Object inside object
JSONObject subdata = new JSONObject();
myObject.put("extra_data", subdata);
// Generate JSON String
System.out.print(myObject);
}
}
该代码将在控制台中生成的JSON字符串打印以下结构:
{
"number_list": [
1.9, 2.9, 3.4, 3.5
], "extra_data": {}, "name": "Carlos", "last_name": "Carlos", "bank_account_balance": 20.2, "age": 21, "is_developer": true
}
B.创建JSON数组
JSONArray类的put方法允许你将一些值推入数组:
package sandbox;
import org.json.*;
public class Sandbox {
/**
* Generating a JSON Array
*
* @param args
*/
public static void main(String[] args) {
JSONArray myArray = new JSONArray();
// Push mixed values to the array
myArray.put(1);
myArray.put(2);
myArray.put(3);
myArray.put(4);
myArray.put(new Boolean(true));
myArray.put(new Boolean(false));
myArray.put("Some String Value");
// Generate JSON String
System.out.print(myArray);
}
}
该代码将在控制台中生成的JSON字符串打印以下结构:
[1, 2, 3, 4, true, false, "Some String Value"]
C.解析JSON字符串
如果你愿意在代码中转换JSON字符串(将其转换为数组或对象), 则只需根据类型将字符串作为类的构造函数的第一个参数提供即可, 例如, 如果要转换JSONArray:
package sandbox;
import org.json.*;
public class Sandbox {
/**
* Parsing a JSONArray string
*
* @param args
*/
public static void main(String[] args) {
JSONArray myJson = new JSONArray("[123, {\"1\":{\"2\":{\"3\":{\"4\":[5, {\"6\":7}]}}}}]");
// Print first value of the array
System.out.print(myJson.get(0));
// Print second value of the array
System.out.print(myJson.get(1));
}
}
或者, 如果你要将字符串转换为JSONObject:
package sandbox;
import org.json.*;
public class Sandbox {
/**
* Parsing a JSONObject string
*
* @param args
*/
public static void main(String[] args) {
JSONObject myJson = new JSONObject("{ \"number_list\": [ 1.9, 2.9, 3.4, 3.5 ], \"extra_data\": {}, \"name\": \"Carlos\", \"last_name\": \"Carlos\", \"bank_account_balance\": 20.2, \"age\": 21, \"is_developer\": true }");
// Get some keys from the JSON Object
System.out.print(myJson.get("name")); // Carlos
System.out.print(myJson.get("age")); // 21
}
}
编码愉快!
评论前必须登录!
注册