在開(kāi)發(fā)中,我們通常需要使用 JSON 數(shù)據(jù)格式來(lái)進(jìn)行數(shù)據(jù)交換和傳遞。而在 ElasticSearch 中,我們可以使用 JSON 字符串來(lái)進(jìn)行索引數(shù)據(jù)的創(chuàng)建、更新和刪除等操作。
為了能夠解析 JSON 數(shù)據(jù),我們需要使用 ES 中的一個(gè)內(nèi)置方法——JSON.parse()
。
// ES7 之前的寫(xiě)法 const jsonStr = "{\"name\": \"小明\", \"age\": 18}"; const jsonObj = JSON.parse(jsonStr); // ES7 之后的寫(xiě)法 const jsonStr = "{\"name\": \"小明\", \"age\": 18}"; const jsonObj = JSON.parse(jsonStr, (key, value) =>{ if (typeof(value) === "string") { return value.trim(); // 去除字符串兩端的空白字符 } return value; });
上述代碼中,我們首先定義了一個(gè) JSON 字符串jsonStr
,然后使用JSON.parse()
方法將其解析成一個(gè) JSON 對(duì)象jsonObj
。
在 ES7 之前的版本中,JSON.parse()
只接受一個(gè)參數(shù),即待解析的 JSON 字符串。而在 ES7 中,JSON.parse()
新增了一個(gè)可選的第二個(gè)參數(shù),通過(guò)該參數(shù)可以自定義解析規(guī)則。
const jsonStr = "{\"date\": \"2022-06-01T00:00:00Z\"}"; const jsonObj = JSON.parse(jsonStr, (key, value) =>{ if (typeof value === "string" && /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/.test(value)) { return new Date(value); } return value; });
在上述代碼中,我們定義了一個(gè) JSON 字符串jsonStr
,其中包含一個(gè) ISO 8601 格式的時(shí)間字符串。我們通過(guò)第二個(gè)參數(shù)的回調(diào)函數(shù),實(shí)現(xiàn)了將時(shí)間字符串轉(zhuǎn)化為 Date 類(lèi)型的功能。
總之,無(wú)論何時(shí)何地,只要我們需要解析 JSON 數(shù)據(jù),就可以使用 ES 中內(nèi)置的JSON.parse()
方法。