2016-08-11 23 views
0

此JSON是否有可能一個JSON轉換爲Java類對象。如果類不可用

{ 
    "age":"23", 
    "name":"srinivas", 
    "blog":"A", 
    "messages":["msg1","msg2","msg3"] 
} 

我希望有一個JSON轉換爲Java類這樣的階級和階級的使用:

public class A 
{ 
    private String name; 

    private String age; 

    private String blog; 

    private String[] messages; 

    public String getName() 
    { 
     return name; 
    } 

    public void setName (String name) 
    { 
     this.name = name; 
    } 

    public String getAge() 
    { 
     return age; 
    } 

    public void setAge (String age) 
    { 
     this.age = age; 
    } 

    public String getBlog() 
    { 
     return blog; 
    } 

    public void setBlog (String blog) 
    { 
     this.blog = blog; 
    } 

} 

回答

0

不可以。你不能從你的json爲你自動創建類。

但是你可能需要的是的有關以下的事情:

你需要link

摘自鏈接,下面的示例代碼:

String carJson = 
     "{ \"brand\" : \"Mercedes\", \"doors\" : 5," + 
     " \"owners\" : [\"John\", \"Jack\", \"Jill\"]," + 
     " \"nestedObject\" : { \"field\" : \"value\" } }"; 

ObjectMapper objectMapper = new ObjectMapper(); 


try { 

    JsonNode node = objectMapper.readValue(carJson, JsonNode.class); 

    JsonNode brandNode = node.get("brand"); 
    String brand = brandNode.asText(); 
    System.out.println("brand = " + brand); 

    JsonNode doorsNode = node.get("doors"); 
    int doors = doorsNode.asInt(); 
    System.out.println("doors = " + doors); 

    JsonNode array = node.get("owners"); 
    JsonNode jsonNode = array.get(0); 
    String john = jsonNode.asText(); 
    System.out.println("john = " + john); 

    JsonNode child = node.get("nestedObject"); 
    JsonNode childField = child.get("field"); 
    String field = childField.asText(); 
    System.out.println("field = " + field); 

} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

我的Qus是可以轉換java類對象中的json或xml如果類尚未創建 – user3395448

+0

由json創建java類並保存或使用該類 – user3395448

+0

本身沒有任何反應。你將需要自己創建類和相關的getter setter和屬性 –

0

您技術上可以創建一個類在運行時:請參閱How to create a class dynamically in javaCreating classes dynamically with Java。但是,如果您的代碼想要以某種方式使用A,則需要在編譯期間使用它。如果你的代碼不需要使用A,爲什麼要創建它?你可以實現一些接口/擴展一些類,其中在編譯期間可用,但在你的情況下沒有合理的通用接口,你只能使用反射訪問它。

更合理的替代方法是在構建過程中從已知的JSON示例(或更好地從某些模式描述中)生成一個類。再次,有很多方法可以做到這一點,你應該尋找一個適合你的需求。

相關問題