Java中的JSONObject使用操作詳解
java中jsonObject的使用
話不多說上代碼:
package com.yst.testData;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
public class testJson {
public static void main(String[] args) {
String jsonStr = "{\"842\":{\"useranswer\":\"3407|3408\",\"score\":0},\"846\":{\"useranswer\":\"3414\",\"score\":0},\"847\":{\"useranswer\":\"3499\",\"score\":2}}\n";
//把字符串轉(zhuǎn)換為jsonObject
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//獲取key
Set<String> jsonset = jsonObject.keySet();
//循環(huán)key
for (String key : jsonset) {
//通過key獲取這個key下的json
String result = jsonObject.getString(key);
//字符串轉(zhuǎn)換jsonObject
JSONObject injson = JSONObject.parseObject(result);
//獲取
String useranswer = injson.getString("useranswer");
String score = injson.getString("score");
System.out.println(useranswer + score);
}
testArray();
mapToJson();
}
//解析數(shù)組
public static void testArray() {
String json = "{\n" +
"\t\"code\": \"200\",\n" +
"\t\"bannerlist\": [{\n" +
"\t\t\"img\": \"http://imgcdn.mingcloud.net/image/student/83e3c4c9b3a44375b290e23cd6b6ea95/202105130953372113179345.jpg@!thumbnail_600w_100h?x-oss-process=image/resize,m_fill,h_280,w_703,limit_0\",\n" +
"\t\t\"bannerType\": \"0\",\n" +
"\t\t\"bannerid\": \"1\",\n" +
"\t\t\"link\": \"http://h5.mingcloud.net/growing-tree/elegant-demeanor.html\",\n" +
"\t\t\"weight\": 100,\n" +
"\t\t\"dates\": \"2021-07-02 14:22:54\",\n" +
"\t\t\"title\": \"xyfc\",\n" +
"\t\t\"status\": \"0\"\n" +
"\t}],\n" +
"\t\"sdk\": \"0\"\n" +
"}";
JSONObject jsonObject = JSONObject.parseObject(json);
String code = jsonObject.getString("code");
System.out.println(code);
JSONArray array = jsonObject.getJSONArray("bannerlist");
List<String> list=new ArrayList<>();
for (int i=0;i<array.size();i++){
JSONObject json1= array.getJSONObject(i);
String img=json1.getString("img");
String bannerType=json1.getString("bannerType");
String bannerid=json1.getString("bannerid");
String link=json1.getString("link");
String weight=json1.getString("weight");
String dates=json1.getString("dates");
String title=json1.getString("title");
String status=json1.getString("status");
System.out.println(img+bannerType+bannerid+link+weight+dates+title+status);
}
}
//map轉(zhuǎn)為json
public static void mapToJson(){
Map<String,Object> map=new HashMap<>();
map.put("1","哈哈");
map.put("2","呵呵");
String mapToJson=JSON.toJSONString(map);
JSONObject json=JSONObject.parseObject(mapToJson);
System.out.println(json);
//JsonObject 轉(zhuǎn)化為map
Map<String,Object> itemMap=JSONObject.toJavaObject(json,Map.class);
Set<String> map1=itemMap.keySet();
for (String key:map1){
System.out.println("key為"+key+"對應(yīng)的值為"+map.get(key));
}
//list轉(zhuǎn)為jsonarray
List<String> list=new ArrayList<>();
list.add("吳xiaoxiao");
list.add("吳哈哈");
JSONArray array=JSONArray.parseArray(JSON.toJSONString(list));
System.out.println(array);
for (int i=0;i<array.size();i++){
System.out.println(array.get(i));
}
}
}Java中的JSONObject詳解
一、引言
在Java開發(fā)中,處理JSON數(shù)據(jù)是一種常見的需求。JSONObject是處理JSON對象的一個非常有用的類,它提供了一系列的API來操作JSON對象。本文將詳細(xì)介紹JSONObject的使用方法和一些常見的操作。
環(huán)境準(zhǔn)備(引入依賴):

<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.26</version>
</dependency>二、JSONObject的創(chuàng)建與基本操作
1、創(chuàng)建JSONObject
JSONObject可以通過多種方式創(chuàng)建,最基本的是使用默認(rèn)構(gòu)造函數(shù):
import org.json.JSONObject;
public class JSONObjectDemo {
public static void main(String[] args) {
// 使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建JSONObject
JSONObject jsonObject = new JSONObject();
System.out.println("Empty JSONObject: " + jsonObject.toString());
}
}2、添加鍵值對
向JSONObject中添加數(shù)據(jù)可以通過put方法實現(xiàn):
// 向JSONObject添加鍵值對
jsonObject.put("name", "ning");
jsonObject.put("age", 25);3、獲取值
從JSONObject中獲取值,可以使用get方法或者特定類型的getX方法:
// 使用get方法獲取值
Object name = jsonObject.get("name");
// 使用特定類型的getX方法獲取值
int age = jsonObject.getInt("age");三、JSONObject的高級特性
1、遍歷JSONObject
遍歷JSONObject中的所有鍵值對,可以使用keys方法和增強(qiáng)型for循環(huán):
// 遍歷JSONObject
for (String key : jsonObject.keySet()) {
Object value = jsonObject.get(key);
System.out.println(key + ": " + value);
}
2、從字符串創(chuàng)建JSONObject
如果已經(jīng)有了一個JSON格式的字符串,可以直接從該字符串創(chuàng)建JSONObject:
String jsonString = "{\"name\":\"ning\",\"age\":25}";
JSONObject jsonObjectFromString = new JSONObject(jsonString);
System.out.println("JSONObject from String: " + jsonObjectFromString);3、JSONObject與JSONArray的結(jié)合使用
JSONObject可以包含JSONArray,這使得處理復(fù)雜的JSON結(jié)構(gòu)變得簡單:
// 創(chuàng)建JSONArray并添加到JSONObject
JSONArray jsonArray = new JSONArray();
jsonArray.put("Java");
jsonArray.put("Python");
jsonArray.put("C++");
jsonObject.put("languages", jsonArray);
System.out.println("JSONObject with JSONArray: " + jsonObject);4、更新和刪除鍵值對
JSONObject也支持更新和刪除操作:
// 更新鍵值對
jsonObject.put("age", 26);
// 刪除鍵值對
jsonObject.remove("name");四、錯誤處理
在使用JSONObject時,錯誤處理是一個重要的環(huán)節(jié),因為它可以幫助我們優(yōu)雅地處理數(shù)據(jù)不一致、格式錯誤或鍵不存在等問題。以下是一些詳細(xì)的錯誤處理策略:
1. 鍵值存在性檢查
在嘗試訪問JSONObject中的鍵之前,首先檢查該鍵是否存在,可以避免拋出JSONException。JSONObject提供了has方法來檢查鍵是否存在:
if (jsonObject.has("key")) {
String value = jsonObject.getString("key");
} else {
// 鍵不存在的處理邏輯
}2. 使用optX系列方法
optX系列方法是安全的訪問方法,當(dāng)鍵不存在時,它們不會拋出異常,而是返回null或默認(rèn)值。例如,optString、optInt等:
// 如果鍵不存在,則返回默認(rèn)值"Default Value"
String value = jsonObject.optString("key", "Default Value");3. 異常捕獲
使用try-catch塊來捕獲和處理可能發(fā)生的JSONException,這樣可以在發(fā)生錯誤時提供更多的控制和反饋:
try {
JSONObject jsonObject = new JSONObject(jsonString);
// 處理JSONObject
} catch (JSONException e) {
// 處理解析錯誤
System.err.println("Invalid JSON: " + e.getMessage());
}4. 處理JSON解析異常
JSONException可能由多種原因引起,例如不完整的JSON數(shù)據(jù)、鍵不存在、數(shù)組越界或類型不匹配。對于這些情況,應(yīng)確保JSON數(shù)據(jù)的完整性和正確的格式,并在獲取鍵值之前,確保JSON對象中包含該鍵。
五、總結(jié)
JSONObject是Java中處理JSON數(shù)據(jù)的強(qiáng)大工具,它不僅支持基本的創(chuàng)建和數(shù)據(jù)操作,還提供了遍歷、與JSONArray的結(jié)合使用以及錯誤處理等高級特性。掌握JSONObject的使用,可以讓我們在處理JSON數(shù)據(jù)時更加得心應(yīng)手。
參考文章:
到此這篇關(guān)于Java中的JSONObject使用操作詳解的文章就介紹到這了,更多相關(guān)Java JSONObject使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springmvc處理模型數(shù)據(jù)ModelAndView過程詳解
這篇文章主要介紹了springmvc處理模型數(shù)據(jù)ModelAndView過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析
這篇文章主要介紹了SpringBoot跨域Access-Control-Allow-Origin實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
SpringBoot結(jié)合Ajax實現(xiàn)登錄頁面實例
大家好,本篇文章主要講的是SpringBoot結(jié)合Ajax實現(xiàn)登錄頁面實例,感興趣的同學(xué)趕快來看一看,對你有幫助的話記得收藏一下2022-02-02
解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問題
這篇文章主要介紹了解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
解決spring.thymeleaf.cache=false不起作用的問題
這篇文章主要介紹了解決spring.thymeleaf.cache=false不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
spring/springboot整合curator遇到的坑及解決
這篇文章主要介紹了spring/springboot整合curator遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05

