java json多层字符串
时间: 2024-12-31 08:14:05 浏览: 11
### Java 中解析和生成多层嵌套 JSON 字符串
#### 使用 `org.json` 库解析多层嵌套 JSON 数据
对于复杂的 JSON 结构,在 Java 中可以利用第三方库来简化操作。常用的是 `org.json` 或者更强大的 Jackson 和 Gson 库。
当涉及到多层嵌套的 JSON 对象时,可以通过递归方式访问每一层的数据[^1]:
```java
import org.json.JSONObject;
public class JsonExample {
public static void main(String[] args) {
String jsonString = "{\"person\":{\"name\":\"John\",\"address\":{\"city\":\"New York\",\"zipcode\":10001}}}";
JSONObject jsonObject = new JSONObject(jsonString);
JSONObject personObject = jsonObject.getJSONObject("person");
String name = personObject.getString("name");
System.out.println(name); // 输出 John
JSONObject addressObject = personObject.getJSONObject("address");
String city = addressObject.getString("city");
int zipcode = addressObject.getInt("zipcode");
System.out.println(city + ", " + zipcode); // 输出 New York, 10001
}
}
```
如果遇到数值类型的键值,则可以根据具体类型调用相应方法如 getInt()、getFloat() 来获取其值[^2]。
#### 将 Java 对象转成 JSON 字符串并保持层次结构
创建具有相同复杂度的新 JSON 对象也很简单:
```java
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class CreateJsonExample {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
Map<String,String> addressMap = new HashMap<>();
addressMap.put("city", "Beijing");
addressMap.put("zipcode", "10086");
map.put("name","Li Lei");
map.put("address",new JSONObject(addressMap));
JSONObject jsonObj = new JSONObject(map);
System.out.println(jsonObj.toString(4));
/*
打印结果如下:
{
"name": "Li Lei",
"address": {
"city": "Beijing",
"zipcode": "10086"
}
}
*/
}
}
```
通过这种方式可以在 Java 中轻松实现对多层嵌套 JSON 的解析与构建工作。
阅读全文