2016-07-23 25 views
0

我正在寫一個Windows應用商店應用(Win Phone 8.1)。在c中有兩個同名的成員#

我有一個發送請求到服務器,並給出了迴應:

C#:

public class Request 
{ 
    public PWSESSIONRS PWSESSIONRS { get; set; } 
} 

public class Response 
{ 
    public List<PWSESSIONR> PWSESSIONRS { get; set; } 
} 

public class PWSESSIONRS 
{ 
    public PWPROCESSRS PWPROCESSRS { get; set; } 
} 

public class PWPROCESSRS 
{ 
    public PWERROR PWERROR { get; set; } 

    public PWHEADER PWHEADER { get; set; } 
    public PWDATA PWDATA { get; set; } 
} 

public class PWDATA 
{ 
    public GETBIKEDETAIL GETBIKEDETAIL { get; set; } 
    public MOBAUTH MOBAUTH { get; set; } 

} 

public class MOBAUTH 
{ 
    //Request: 
    public List<Row> Row { get; set; } 

    //Response: 
    public Row Row { get; set; } 

} 

它顯示錯誤:

The MOBAUTH already contains a definition for Row

現在,如果我這樣做這個:

public class MOBAUTH 
{ 
    //Request: 
    [JsonProperty("Row")] 
    public List<Row> Row { get; set; } 

    //Respnse: 
    [JsonProperty("Row")] 
    public Row Row_ { get; set; } 

} 

它顯示運行時錯誤:

An exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.DLL but was not handled in user code Additional information: A member with the name 'Row' already exists on 'MyApp.Model.Request.MOBAUTH'. Use the JsonPropertyAttribute to specify another name.

JSON請求:

{"PWSESSIONRS":{"PWPROCESSRS":{"PWERROR":null,"PWHEADER":{"DEVICE_LONGITUDE":"77.044510","PROCESS_ID":"","LOGIN_ID":"FiZqnXB4y0u4WNTYG2UXxw==","USER_ID":"FiZqnXB4y0u4WNTYG2UXxw==","IMEI_NO":"64C267E1-545D-4A2B-B726-60F332B18F44","DEVICE_MODEL":"","VERSION_ID":"1.0","PW_SESSION_ID":"3tyEwspAMHj9FvWQzSecuq/7DQMDw0MalYiPIXWaFvg=","DEVICE_LATITUDE":"28.412745","INSTALLATION_ID":"8QO8FLBU1GGEUCIHI44R+A/7DQMDW0MALYIPIXWAFVG=~HCA~614","SESSION_EXPIRE_TIME":"","ORG_ID":"HCA","APP_ID":"HCA","PW_VERSION":"","LOCATION":"","USER_SESSION_ID":"FFv4JAm8bpHauIahnRgs9ZW2ypH7NE41Dz9OZBIXJWnBiR/VRj3yaAmRx+SeZtyc","OS_VERSION":"","SERVER_TIMESTAMP":"","DEVICE_MAKE":"","OUT_PROCESS_ID":"MOBAUTH","SIM_ID":"","PW_CLIENT_VERSION":"3.1","PASSWORD":"FiZqnXB4y0u4WNTYG2UXxw==","DEVICE_TIMESTAMP":"2016-07-23 16:54:09","IS_AUTH":"","LAC":"","MCC":"","MNC":"","CID":"","LAST_TRANSACTION_ID":"","IN_PROCESS_ID":null},"PWDATA":{"GETBIKEDETAIL":null,"MOBAUTH":{"Row":[{"x_VIN":null,"x_phone_no":null,"x_reg_no":null,"x_mobile_no":"9988887777","MessageSource":null,"DetailMessage":null,"DataElements":null,"Message":null,"MsgID":null,"RefID":null,"MessageType":null}]}}}}} 

JSON響應:

{ 
    "PWSESSIONRS": [ 
    { 
     "PWPROCESSRS": { 
     "PWERROR": { 
      "MOBAUTH": { 
      "Row": { 
       "MessageSource": "PLATWARE", 
       "DetailMessage": "JSONObject[\"x_reg_no\"] not a string.", 
       "DataElements": "", 
       "Message": "Please pass valid JSON Data for Process.", 
       "MsgID": "plat029", 
       "RefID": "MOBAUTH", 
       "MessageType": "Error" 
      } 
      } 
     }, 
     "PWHEADER": { 
      "DEVICE_MODEL": "", 
      "IMEI_NO": "64C267E1-545D-4A2B-B726-60F332B18F44", 
      "VERSION_ID": "1.0", 
      "DEVICE_LATITUDE": "28.412745", 
      "INSTALLATION_ID": "8QO8FLBU1GGEUCIHI44R+A/7DQMDW0MALYIPIXWAFVG=~HCA~614", 
      "APP_ID": "HCA", 
      "IS_AUTH": "Y", 
      "PW_VERSION": "", 
      "OS_VERSION": "", 
      "DEVICE_MAKE": "", 
      "OUT_PROCESS_ID": "MOBAUTH", 
      "SIM_ID": "", 
      "PASSWORD": "", 
      "DEVICE_LONGITUDE": "77.044510", 
      "LOGIN_ID": "FIZQNXB4Y0U4WNTYG2UXXW==", 
      "USER_ID": "", 
      "PW_SESSION_ID": "3TYEWSPAMHJ9FVWQZSECUQ/7DQMDW0MALYIPIXWAFVG=", 
      "SESSION_EXPIRE_TIME": "", 
      "ORG_ID": "HCA", 
      "LOCATION": "", 
      "IN_PROCESS_ID": "MOBAUTH", 
      "USER_SESSION_ID": "FFV4JAM8BPHAUIAHNRGS9ZW2YPH7NE41DZ9OZBIXJWNBIR/VRJ3YAAMRX+SEZTYC", 
      "SERVER_TIMESTAMP": "2016-07-23 18:46:01", 
      "PW_CLIENT_VERSION": "3.1", 
      "DEVICE_TIMESTAMP": "2016-07-23 16:54:09" 
     }, 
     "PWDATA": { 
      "MOBAUTH": "" 
     } 
     } 
    } 
    ] 
} 
+3

目前仍不清楚爲什麼你有兩個屬性需要調用'Row',或者爲什麼你希望它們都使用'Row'的JSON屬性。請澄清你的問題。 (除了其他任何東西,它看起來像第一個屬性*應該被稱爲「行」,因爲它是一個列表...)(我還*強烈*建議您將所有類名更改爲可讀性並按照.NET命名約定。) –

+0

它的服務器接收json並以一種格式發送迴應答。只是JSON請求中的MOBAUTH與json響應的區別 –

+0

恐怕沒有使它更清晰。 –

回答

1

我想你可以創建兩個類:

public class MOBAUTHRequest 
{ 
    //Request: 
    [JsonProperty("Row")] 
    public List<Row> Row { get; set; }  
} 

public class MOBAUTHResponse 
{ 
    //Request: 
    [JsonProperty("Row")] 
    public Row Row { get; set; } 
} 

並使用適當的序列號 - MOBAUTHRequest與請求和MOBAUTHResponse與響應。但正如評論中所述,您絕對應該考慮更改命名約定以匹配C#並使用JSON.NET屬性對序列化進行「重命名」。

相關問題