在實(shí)際應(yīng)用中,我們常常需要向已有的json文件中追加新數(shù)據(jù),而不是覆蓋原有的數(shù)據(jù)。這時(shí)候,我們就需要使用Jackson庫(kù)來(lái)實(shí)現(xiàn)json文件的追加。
//1. 創(chuàng)建ObjectMapper對(duì)象 ObjectMapper objectMapper = new ObjectMapper(); //2. 讀取已有的json文件中的數(shù)據(jù) JsonNode rootNode = objectMapper.readTree(new File("data.json")); //3. 將新數(shù)據(jù)轉(zhuǎn)換為JsonNode對(duì)象 JsonNode newNode = objectMapper.convertValue(newData, JsonNode.class); //4. 將新節(jié)點(diǎn)添加到根節(jié)點(diǎn)中 ((ArrayNode) rootNode).add(newNode); //5. 將更新后的數(shù)據(jù)重新寫(xiě)入文件 objectMapper.writeValue(new File("data.json"), rootNode);
在上述代碼中,我們首先創(chuàng)建了一個(gè)ObjectMapper對(duì)象,并使用它來(lái)讀取已有的json文件中的數(shù)據(jù)。接著,我們將要追加的新數(shù)據(jù)轉(zhuǎn)換為JsonNode對(duì)象,并將其添加到根節(jié)點(diǎn)中。最后,我們?cè)俅问褂肙bjectMapper對(duì)象將更新后的數(shù)據(jù)寫(xiě)入文件中。
需要注意的是,我們?cè)诘谒牟街袑⒏?jié)點(diǎn)強(qiáng)制轉(zhuǎn)換為ArrayNode類(lèi)型,這是因?yàn)槲覀兗僭O(shè)要追加的數(shù)據(jù)是一個(gè)數(shù)組。如果要向?qū)ο笾凶芳訑?shù)據(jù),需要將根節(jié)點(diǎn)轉(zhuǎn)換為ObjectNode類(lèi)型。