2015-05-26 38 views
-3

哪些步驟會重現該問題? 1.I有一個JSON作爲效應初探gson JSON到Java - json屬性。或 - 在其中

String Content = 
"{ 
    "region":{ 
     "state.code":"TX", 
     "country-code":"USA" 
    } 
}"; 

2.我想轉換這個JSON對象轉換成Java Object.I有這個Java類轉換

public class Region{ 
    private String stateCode; 
    private String countryCode; 
      public String getStateCode() 
     { 
      return stateCode; 
     } 

     public void setStateCode (String stateCode) 
     { 
      this.stateCode = stateCode; 
     } 

      public String getCountryCode() 
     { 
      return countryCode; 
     } 

     public void setCountryCode (String countryCode) 
     { 
      this.countryCode = countryCode; 
     } 
} 

3.My問題是Java的犯規允許。或 - 在變量名稱中。哪些不允許json字符串映射到給給null的Region java類對象。

gson.fromJson(Content, Region.class); 

預期產量是多少?你看到了什麼呢? 任何人都可以幫助我嗎? 我已經嘗試過@SerializedName註解但它不工作。

您使用的是什麼版本的產品?在什麼操作系統上?

請在下面提供任何其他信息。

+0

_I已嘗試@SerializedName註釋,但它不工作._爲什麼不? –

+0

此外,您的根JSON不可映射到「區域」實例。你的根JSON是一個包含'Region'對象的對象。 –

+0

這個問題與'@ SerializedName'無關。 –

回答

0

你試圖

{ 
    "region":{ 
     "state.code":"TX", 
     "country-code":"USA" 
    } 
} 

映射這個JSON來Region類型的實例。該JSON是一個JSON對象,它包含一個名稱爲region的對和一個JSON對象的值。該JSON對象有兩個對,一個名稱爲state.code,JSON字符串值爲TX,另一個名稱爲country-code,JSON字符串值爲USA

您無法將其映射到Region對象。您必須繞過名爲region的根對。

創建封入型

class RegionContainer { 
    private Region region; 
    // the rest 
} 

和其映射

gson.fromJson(Content, RegionContainer.class); 

@SerializedName會爲你下地幹活。

@SerializedName("state.code") 
private String stateCode;