2015-03-31 61 views
0

我想解析來自Web服務提供商 的JSON數據以在我的Web服務客戶機中建模。我一直在試圖通過使用GSON庫來做到這一點。這個問題聽起來很簡單,但JSON看起來是這樣的:JSON與數字解析到模型

{ "aaData": [ { "0": 23, "1": "København", "2": 1 }, { "0": 10, "1": "Esbjerg", "2": 2 }, { "0": 21, "1": "Glostrup", "2": 3 }, { "0": 19, "1": "Helsingør", "2": 4 }, { "0": 7, "1": "Herning", "2": 5 }, { "0": 18, "1": "Hillerød", "2": 6 }, { "0": "18A", "1": "Hillerød (Frederikssund)", "2": 7 }, { "0": 1, "1": "Hjørring", "2": 8 }, { "0": "1A", "1": "Hjørring (Frederikshavn)", "2": 9 }, { "0": "1B", "1": "Hjørring (Aabybro)", "2": 10 }, { "0": 16, "1": "Holbæk", "2": 11 }, { "0": "16A", "1": "Holbæk (Kalundborg)", "2": 12 }, { "0": 6, "1": "Holstebro", "2": 13 }, { "0": "6B", "1": "Holstebro (Thisted)", "2": 15 }, { "0": 8, "1": "Horsens", "2": 16 }, { "0": 9, "1": "Kolding", "2": 17 }, { "0": "9A", "1": "Kolding (Vejle)", "2": 19 }, { "0": 20, "1": "Lyngby", "2": 20 }, { "0": 14, "1": "Nykøbing Falster", "2": 21 }, { "0": "14A", "1": "Nykøbing Falster (Nakskov)", "2": 22 }, { "0": 15, "1": "Næstved", "2": 23 }, { "0": "15A", "1": "Næstved (Slagelse)", "2": 24 }, { "0": 12, "1": "Odense", "2": 25 }, { "0": 3, "1": "Randers", "2": 26 }, { "0": "3A", "1": "Randers (Grenaa)", "2": 27 }, { "0": 17, "1": "Roskilde", "2": 28 }, { "0": 13, "1": "Svendborg", "2": 29 }, { "0": 11, "1": "Sønderborg", "2": 30 }, { "0": "11C", "1": "Sønderborg (Haderslev)", "2": 31 }, { "0": "11A", "1": "Sønderborg (Tønder)", "2": 32 }, { "0": "11B", "1": "Sønderborg (Aabenraa)", "2": 33 }, { "0": 5, "1": "Viborg", "2": 34 }, { "0": "5A", "1": "Viborg (Silkeborg)", "2": 35 }, { "0": 2, "1": "Ålborg", "2": 36 }, { "0": 4, "1": "Århus", "2": 37 }, { "0": "4A", "1": "Århus (Samsø)", "2": 38 }, { "0": 24, "1": "Bornholm", "2": 39 }, { "0": 22, "1": "Frederiksberg", "2": 40 }, { "0": "22A", "1": "Frederiksberg (Howitzvej)", "2": 41 } ] }

洙的數據模型類應該是這樣的:

'公共類AaData { 私人字符串2;

private String 1; 

private String 0; 

public String get2() 
{ 
    return 2; 
} 

public void set2 (String 2) 
{ 
    this.2 = 2; 
} 

public String get1() 
{ 
    return 1; 
} 

public void set1 (String 1) 
{ 
    this.1 = 1; 
} 

public String get0() 
{ 
    return 0; 
} 

public void set0 (String 0) 
{ 
    this.0 = 0; 
} 

@Override 
public String toString() 
{ 
    return "ClassPojo [2 = "+2+", 1 = "+1+", 0 = "+0+"]"; 
}} 

公共類管轄權 { 私人AaData [] aaData;

public AaData[] getAaData() 
{ 
    return aaData; 
} 

public void setAaData (AaData[] aaData) 
{ 
    this.aaData = aaData; 
} 

@Override 
public String toString() 
{ 
    return "ClassPojo [aaData = "+aaData+"]"; 
} 

}

所以問題是Java恰好不喜歡用數字來命名變量。 GSON中的任何想法? 也許不同的圖書館? 謝謝!

+0

這個映射看起來不錯我。 – 2015-03-31 08:55:07

回答

0

我認爲這需要SerializedName註釋。

相反的:

private String 1;

使用例如:

@SerializedName("1") private final String fieldOne;

+0

謝謝! 這很有用。 – Tom 2015-03-31 21:00:34

0

這樣的事情可能會幫助您:

private Object extractJsonNodeValueBasedOnNodeType(final JsonNode jsonNode) { 
    final JsonNodeType nodeType = jsonNode.getNodeType(); 
    final Object nodeValue; 
    switch (nodeType) { 
     case NUMBER: 
      nodeValue = jsonNode.asLong(); 
      break; 
     default: 
      nodeValue = jsonNode.asText(); 
      break; 
    } 

    return nodeValue; 
}