2016-12-05 52 views
3

我需要使用Jackson創建一個JSON字符串,如下所示。 我知道類似的問題已經回答在這裏:Creating a json object using jackson在Java中使用Jackson創建JSON對象

但我的預期Json字符串是有點不同於上面的例子。

如何僅使用jacksonjava中形成以下格式的JSON對象? 另外,我不喜歡創建一個單獨的POJO來實現此目的。

預期輸出:

{ 
    "obj1": { 
     "name1": "val1", 
     "name2": "val2" 
    }, 
    "obj2": { 
     "name3": "val3", 
     "name4": "val4" 
    }, 
    "obj3": { 
     "name5": "val5", 
     "name6": "val6" 
    } 
} 
+1

這已經被回答: http://stackoverflow.com/questions/14515994/convert-json -string-to-pretty-print-json-output-using-jackson –

+0

@Yogesh_D如果你看到我的問題和你提到的問題的輸出格式,他們有點兒fferent。我需要在我的問題中完全按照上面提到的格式輸出。 – Shashank

+0

所以你想將這個JSON字符串轉換爲java POJO? –

回答

11

試試這個:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode rootNode = mapper.createObjectNode(); 

JsonNode childNode1 = mapper.createObjectNode(); 
((ObjectNode) childNode1).put("name1", "val1"); 
((ObjectNode) childNode1).put("name2", "val2"); 

((ObjectNode) rootNode).set("obj1", childNode1); 

JsonNode childNode2 = mapper.createObjectNode(); 
((ObjectNode) childNode2).put("name3", "val3"); 
((ObjectNode) childNode2).put("name4", "val4"); 

((ObjectNode) rootNode).set("obj2", childNode2); 

JsonNode childNode3 = mapper.createObjectNode(); 
((ObjectNode) childNode3).put("name5", "val5"); 
((ObjectNode) childNode3).put("name6", "val6"); 

((ObjectNode) rootNode).set("obj3", childNode3); 


String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode); 
System.out.println(jsonString); 
0

您可以使用谷歌GSON而不是傑克遜。從這裏

http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm

然後

下載gson.jar導入gson.jar到您的項目。

爲例如:

模型類

public class Test{ 
    private string name; 
    private string age; 
    //getter and setters 
} 

控制器類

import google.gson.*; 
    public class TestController{ 

     public void CreateJson(){ 
      List<Test> list = new ArrayList<Test>(); 
      // add all your datas to list  
      Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
      String Jsonvalue = gson.toJson(list); //convert your java object to JsonString 
     } 

    } 
+0

我只需要使用傑克遜。 – Shashank

+0

然後你可以試試這個鏈接https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/。這對我有用 –

-1

隨着POJO

在所需的JSON中創建直接鍵的對象。

public class Obj1 { 
    private String name1; 
    private String name2; 
    //getters and setters 
    public String toString() { 
     return "{" + 
       "\"name1\":\"" + getName1() + "\"," + 
       "\"name2\":\"" + getName2() + "\"" + 
       "}"; 
    } 
} 

public class Obj2 { 
    private String name3; 
    private String name4; 
    //getters and setters 
    public String toString() { 
     return "{" + 
       "\"name3\":\"" + getName3() + "\"," + 
       "\"name4\":\"" + getName4() + "\"" + 
       "}"; 
    } 
} 

現在把這些對象放在傑克遜對象中。

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("obj1", new Obj1().toString()); 
jsonObject.put("obj2", new Obj2().toString()); 
jsonObject.toString(); 

沒有POJO

public String getFirstNode() { 
    return "{" + 
       "\"name1\":\"name1\"," + 
       "\"name2\":\"name2\"" + 
       "}"; 
} 

public String getSecondNode() { 
    return "{" + 
       "\"name3\":\"name3\"," + 
       "\"name4\":\"name4\"" + 
       "}"; 
} 

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("obj1", getFirstNode()); 
jsonObject.put("obj2", getSecondNode()); 
jsonObject.toString(); 
+0

如果通過串聯字符串來創建JSON,那麼爲什麼要一起使用Jackson?這真的不是一個好方法。 – nanosoft

相關問題