2014-06-10 65 views
4

我在它與這個JSON一個JsonNode重命名:如何將現場的JsonNode使用傑克遜API

{"temperature":17,"long":200,"lat":100} 

我想改變JsonNode看起來像這樣

{"MyNewFieldName":17,"long":200,"lat":100} 

是它可能使用Jackson API?

回答

6

您將無法重命名鍵值JSON對中的鍵。你需要做的是創建一個新的鍵值對,它們具有相同的值,但使用不同的鍵並刪除舊鍵。

JsonNode node = ...; 
ObjectNode object = (ObjectNode) node; 
object.set("MyNewFieldName", new TextNode(node.get("temperature").asText())); 
object.remove("temperature"); 
+0

感謝您的想法:),但我得到這個錯誤的方法集(字符串,TextNode)是未定義ObjectNode – hich

+0

@ user3330322我使用的是傑克遜2.你的類型?目標方法是['ObjectNode#set(String,JsonNode)'](http://fasterxml.github.io/jackson-databind/javadoc/2.3.0/com/fasterxml/jackson/databind/node/ObjectNode.html #設置%28java.lang.String,%20com.fasterxml.jackson.databind.JsonNode%29)。如果您正在使用的傑克遜版本中不存在這樣的方法,則可能有類似的情況。 –

+0

我覺得我使用傑克遜1.9,以及有一個put(String,JsonNode)方法,我認爲它做同樣的事情。非常感謝。 – hich