2014-03-06 18 views
1

好吧,所以我使用傑克遜解析JSON文件,問題是,該文件是一個大的無名數組。它的格式爲:使用傑克遜解析和未命名的數組

[ {json stuff}, {json stuff}, ..., {json stuff} ]

所有json stuff是隻是普通的JSON表達式,我將不得不面對一旦我真的進入一個數組這一點。

我找不到任何有關如何使用Jackson映射事物的實際教程,但需要找到一種方法將這些不同的東西映射到數組中,然後使用Jackson將每個特定的東西解析爲它的各個組件。任何想法如何做到這一點?

P.S.我能找到的唯一真正的教程是:http://www.studytrails.com/java/json/java-jackson-Data-Binding.jsp

其中DataSet []是在文件中命名的數組。我想弄清楚如何做教程的工作,除了上面的例子,其中數組不是以名字開頭的。

P.P.S.下面是我使用的代碼:

基本傑克遜代碼映射到我的項目:

ObjectMapper mapper = new ObjectMapper(); 
    mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 

    URL url = null; 
    try { 
     url = new URL("my JSON URL"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 

    try { 
     ContactInfo contacts = mapper.readValue(url, ContactInfo.class); 
    } catch (JsonParseException e) { 
     e.printStackTrace(); 
    } catch (JsonMappingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

然後我的ContactInfo類只是getter和setter與在JSON URL的定義字段。問題是,如果沒有名稱來分解所有不同的JSON節點,我不知道如何訪問各個聯繫人值,或者它們是否被覆蓋。

+0

只要使用'List '或'Whatever []'。 –

+0

你有什麼代碼可以發佈你到目前爲止嘗試過的嗎? –

+0

剛加入。 編輯:使用列表給出類型不匹配,與ContactInto []一樣。 –

回答

2

只需使用ContactInfo[]作爲類的類型。這是一個工作示例。

public class Example { 
    public static void main(String[] args) throws Exception { 
     String json = "[{\"name\":\"random\"},{\"name\":\"random\"},{\"name\":\"random\"}]"; 
     ObjectMapper mapper = new ObjectMapper(); 
     ContactInfo[] contactInfos = mapper.readValue(json, ContactInfo[].class); 
     System.out.println(contactInfos.length); 
    } 

    static class ContactInfo { 
     private String name; 

     public String getName() { 
      return name; 
     } 

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

或者,你可以使用一個List<ContactInfo>,但你需要一個TypeReference

List<ContactInfo> contactInfos = mapper.readValue(json, new TypeReference<List<ContactInfo>>() {}); 
System.out.println(contactInfos.size()); 
+0

明白了,仍然在學習傑克遜,今天剛剛開始,那裏的教程嚴重缺乏。謝謝您的幫助! –