在處理Java中的JSON數(shù)據(jù)時(shí),我們可能需要向現(xiàn)有JSON數(shù)據(jù)中追加新數(shù)據(jù),這時(shí)候就需要使用Java中的JSON庫(kù)來(lái)實(shí)現(xiàn)。
目前比較常用的JSON庫(kù)有jackson和Gson,其中jackson是多數(shù)情況下的首選。下文將以jackson作為JSON庫(kù)來(lái)進(jìn)行演示。
首先,我們需要將JSON數(shù)據(jù)讀入到一個(gè)Java對(duì)象中,并將該對(duì)象轉(zhuǎn)化為JSON節(jié)點(diǎn)。假設(shè)我們想向以下JSON數(shù)據(jù)中追加一個(gè)名為“Mary”、年齡為20歲、性別為女的人:
{ "people": [ { "name": "Bob", "age": 25, "gender": "Male" }, { "name": "Alice", "age": 30, "gender": "Female" } ] }
我們可以先將該JSON數(shù)據(jù)讀入到一個(gè)JsonNode對(duì)象中:
//讀取JSON數(shù)據(jù) ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(jsonStr);
其中,jsonStr是上述JSON數(shù)據(jù)的字符串形式。
為了方便我們找到要追加數(shù)據(jù)的位置,我們可以先找到“people”節(jié)點(diǎn):
//找到“people”節(jié)點(diǎn) JsonNode peopleNode = rootNode.path("people");
接下來(lái),我們可以創(chuàng)建一個(gè)新的JSON節(jié)點(diǎn),并設(shè)置其屬性:
//創(chuàng)建新節(jié)點(diǎn) ObjectNode newNode = mapper.createObjectNode(); newNode.put("name", "Mary"); newNode.put("age", 20); newNode.put("gender", "Female");
最后,我們將新節(jié)點(diǎn)插入到“people”節(jié)點(diǎn)中:
//將新節(jié)點(diǎn)插入到“people”節(jié)點(diǎn)中 ArrayNode peopleArrayNode = (ArrayNode)peopleNode; peopleArrayNode.add(newNode);
這樣,我們就成功地向JSON數(shù)據(jù)中追加了新數(shù)據(jù)。