91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現json數據處理的常用腳本有哪些

發布時間:2023-03-02 10:51:00 來源:億速云 閱讀:86 作者:iii 欄目:開發技術

本篇內容介紹了“Java實現json數據處理的常用腳本有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、工具的使用推薦

1、獲取到請求url(接口的形式-一般數據都是json)

推薦谷歌瀏覽器,當然其他瀏覽器也可以的

在network 下,刷新獲取目標url

2、獲取到目標url(是json數據格式)

推薦火狐瀏覽器,直接在火狐的地址欄搜索目標url,就可以得到格式美化后的json數據了

3、小細節

(1) 使用谷歌瀏覽器,獲取目標url進行復制的時候,有一個小細節-選擇copy,不要選copy value

因為copy value 會對url中的某些參數進行utf8格式轉化

二、網頁的Json數據和java代碼的Map數據

真實業務需求中的數據結構比較復雜,多層嵌套,比如請求url的json數據:map中嵌套list,然后list的每個元素是map,這個map又嵌套了map。

小細節:要注意嵌套的是map還是list(因為0、1、2、3、4... 既可能是索引下標,也可能只是key):

  • 通過火狐瀏覽器折疊后的形狀做判斷,比如{} 則是map,如果是[] 說明是list

  • 如果是idea 調試,也是要注意debug 模式下的類型提示。因為debug 模式下,比如set類型的數據結構,有5個元素,它會給0、1、2、3、4存儲一下元素然后再展示給你觀察,但是要是你注意到提示的類型是Set類型的話,你就清楚在內存中,存儲的絕對不是0、1、2、3、4 這樣連續存儲。

1、網頁的json數據

json 數據格式特點

key:value

鍵值對之間是冒號形式

json 數據的本質

就是字符串,json字符串。

2、java代碼的Map數據

Map 數據格式特點

key=value

鍵值對之間是等號形式

3-1、業務處理-json和map的相互轉換【json 序列化、反序列化】

(1) 推薦使用: JsonUtil 工具類

其實就是封裝了ObjectMapper 關于json和map的相互轉換。toObject方法封裝的是readValue方法,toJson封裝的是writeValueAsString方法。

json轉換成map:JsonUtil.toObject(String content, Class valueType) 返回值是一個 T 類型的

或者 JsonUtil.toObject(String content, TypeReference valueTypeRef) 返回值是一個 T 類型的

返回值還是T 類型(相當于Object類型),要想進一步轉換map,可以強轉一下

map轉成json:JsonUtil.toJson(Object obj)

例子-json轉map

/** 
* json字符串(非常普通的key:value)轉成map
*/
String json = createJsonString("user","xiaoming");
       Object object1 = JsonUtil.toObject(json, new TypeReference<Object>() {});//或者使用方法JsonUtil.toObject(json, Object.class);效果也是一樣的
        Map<String, Object> map1 = (Map<String, Object>) object1;
        System.out.println(map1.toString());
        System.out.println(map1.getClass());

	/*創建json字符串的方法*/
    public static String createJsonString(String key, Object value) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(key, value);
        return jsonObject.toString();
    }


/** 
* json字符串(listmap)轉成ListMap
*/
public static List<Map<String, Object>> toListMap(String json) {
    List<Object> list = JsonUtil.toObject(json,  new TypeReference<List<Object>>() {});
        List<Map<String, Object>> listw = new ArrayList<Map<String, Object>>();
        for (Object object : list) {
            Map<String, Object> ret = (Map<String, Object>) object;
            listw.add(ret);
        }
        return listw;
}
/**
* map轉成json字符串
*/
Map<String, Object> oldMap1 = new HashMap<>();
oldMap.put("1", "一");
String json = JsonUtil.toJson(oldMap);
System.out.println(json);

(2) 直接使用:ObjectMapper

map 在java中,可以劃分到更大的范圍進行處理-Object進行處理

json轉換成map:

readValue(String content, Class valueType) 返回值是一個 T 類型的

或者 readValue(String content, TypeReference valueTypeRef) 返回值是一個 T 類型的

返回值還是T 類型(相當于Object類型),要想進一步轉換map,可以強轉一下

map轉成json:

writeValueAsString(Object obj)

/**
* map轉成json字符串
*/
Map<String, Object> oldMap1 = new HashMap<>();
oldMap.put("1", "一");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(oldMap);
System.out.println(json);

3-2、業務中,將map轉成了json字符串后,想獲取json字符串中的key或者value

如果是數據非常簡單,量非常小,可以使用String的相關截取合并函數,但是不建議,因為json數據的key長度不是固定的,截取非常麻煩

思路:將json字符串轉成json(節點)對象

節點:這塊理解和dom元素的node是一樣的。每個元素都可以理解位一個節點。

■ 例子:

細節:如果是一個JsonNode數組,使用jsonNode.elements();讀取數組中每個node, 如果不是JsonNode數組,使用jsonNode.elements();返回jsonNode的values

//首先把嵌套map轉換json字符串
String jsonStr = mapper.writeValueAsString(oldMap);
//把json字符串轉換jsonNode節點對象,通過jsonNode可以獲取到想要的字段
JsonNode jsonNode = mapper.readValue(jsonStr, JsonNode.class);

//迭代獲取到jsonNode的values
Iterator<JsonNode> elements = jsonNode.elements();
while (elements.hasNext()) {
    JsonNode node = elements.next();
    System.out.println(node.toString());
}

//也可以迭代獲取到jsonNode的keys
Iterator<String> keys = jsonNode.fieldNames();
while (keys.hasNext()) {
     String key = keys.next();
     System.out.println("key鍵是:" + key);
}

//通過key 獲取到 value
JsonNode jNode = jsonNode.get(key);//得到value,value可能是普通的值,也可能是map


//獲取到鍵值對
Iterator<Map.Entry<String,JsonNode>> jsonNodes = jsonNode.fields();  
   while (jsonNodes.hasNext()) {  
       Map.Entry<String, JsonNode> node = jsonNodes.next();  
       System.err.println("遍歷獲取key:"+node.getKey());  
       System.err.println("遍歷獲取值:"+node.getValue().toString());
}

JsonNode節點對象(看出Object)轉成 josn 字符串,使用JsonUtil.toJson(jsonNode) 方法即可。

三、關于網頁相關的常識

1、網頁打不開

原因:可能是網站是在外網,網速受到限制;也可能是該網頁的大小太大了(常見情況就是該網頁有非常非常多的圖片),并且網站還是在外網;

解決:vpn

2、網頁打開慢時,如何查看網頁加載的大小和時間

transferred over network和 resources loaded by the page 區別:

其實和content-encoding: gzip相關;兩者的差別就在于壓縮上,transferred 是前端頁面加載的所有資源經過解壓之后的原始大小。

■ 還可以查看某個請求的大小,比如圖片請求的大小

一般默認下,直接查看就可以啦(畢竟看完也只是做個大概預判)

3、善用network 提供的過濾項

(1) 通過過濾,保留接口請求

(2) 直接通過關鍵詞過濾

4、關于刷新獲取到請求url

關鍵:看的是頁面的布局,例如滾動布局,為了獲取到url,你需要滾動頁面進行刷新;

通用:按F5刷新。

具體情況具體分析,例如你想獲得某個點擊事件的url,打開network,那就點擊一下(按鈕),然后觀察network新增了一條url。

5、快速判斷頁面的數據是同步加載還是異步加載

使用谷歌瀏覽器,禁止js,如果禁止js后還可以看到頁面數據,則是同步數據,否則就是異步數據。

“Java實現json數據處理的常用腳本有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

自治县| 莆田市| 信阳市| 闽清县| 龙南县| 望江县| 乐亭县| 甘孜县| 惠来县| 海兴县| 海南省| 苏尼特左旗| 寻乌县| 南江县| 偏关县| 济宁市| 罗城| 泉州市| 深圳市| 鄂温| 彭水| 尚义县| 当涂县| 保康县| 潮州市| 卫辉市| 驻马店市| 雷波县| 资中县| 嘉鱼县| 锡林郭勒盟| 衡阳市| 柳林县| 定西市| 合山市| 青田县| 赞皇县| 米易县| 洮南市| 土默特右旗| 乐山市|