2017-06-26 54 views
0

我有一個JSON對象:如何轉換,在同一類具有相同的名稱爲特性的兩個JSON性能

{ 
    "user": { 
     "id": "xxx" 
    }, 
    "session": { 
     "id": "xxx" 
    } 
} 

現在我需要JSON轉換成一類,

我的默認答案是寫屬性作爲用戶ID,會話ID

但我希望從User.ID & session.ID(這是不可能的)從可讀性的角度。

+5

爲什麼不可能?只需編寫一個User類和一個Session類...... –

+2

您只需要一個具有兩個屬性('user'和'session')的對象。這些屬性是具有名爲'id'的屬性的對象,但這沒有問題。 – dcg

+0

我會在這裏留下這個:http://json2csharp.com/ –

回答

0

可以使用JsonProperty類的Newtonsoft.Json

public class Model 
{ 
    [JsonProperty(PropertyName = "UserId")] 
    public int ID { get; set; } 

    [JsonProperty(PropertyName = "SessionId")] 
    public int ID1 { get; set; } 
} 
+0

這實際上編譯?似乎你會有一個重複的標識符錯誤 – BradleyDotNET

+0

嗨Rahul,實際上我有一些不同,你說什麼,我有一個名爲'用戶'的JsonProperty和'用戶'屬性具有內部JsonProperty與名稱'ID'有一些價值。現在我在'用戶'級別擁有另一個名爲'session'的JsonProperty,並且這個JSONProperty的內部名稱爲'ID' –

+0

,感謝您提供Newtonsoft.json。 「[JsonPropertyName(」User/Id「)]」這個工作映射「用戶」屬性內部屬性「ID」值 –

1

做一個基類:

public class BaseId //Come up with a better name 
{ 
    public string Id { get; set; } 
} 

然後從這些類繼承它:

public class User : BaseId 
{ 
    //Other stuff if you want 
} 

public class Session : BaseId 
{ 
    //Other stuff if you want 
} 

但是你只能這樣做如果用戶和會話彼此有獨特的區別(但很明顯分享了ID pr operty)。

如果你只是想要兩個不同的變量,然後解析它們變成

0

命名usersession baseid之後類(顯然不需要具體的類這種方式)的兩種不同的情況下,我不知道我理解的完全問題。如果我要做到這一點,就應該是這樣的:

public class Foo 
{ 
    [JsonProperty("user")] 
    public User UserIdentity { get; set; } 

    [JsonProperty("session")] 
    public Session CurrentSession { get; set; } 
} 

public class User 
{ 
    [JsonProperty("id")] 
    string Id { get; set; } 
} 

public class Session 
{ 
    [JsonProperty("id")] 
    string Id { get; set; } 
} 
+0

嗨阿爾曼,我想你說什麼可能無法正常工作,因爲用戶有一些其他的JsonProperties也與會話相同 –

+0

我不確定我關注。您可以將其他屬性添加到會話或用戶,它不僅限於id。無論如何,你可以將它們鏈接起來。 – Arman

0
public class User 
{ 
    [JsonProperty("id")] 
    public string id { get; set; } 
} 

public class Session 
{ 
    [JsonProperty("id")] 
    public string id { get; set; } 
} 

public class MyJson 
{ 
    [JsonProperty("user")] 
    private User user { get; set; } 
    [JsonProperty("session")] 
    private Session session { get; set; }  
    public string UserID { get { return user.id; } } 
    public string SessionID { get { return session.id; } } 
} 

你可以寫這種類型的模型,您請求的用戶ID和會話ID的類型,你可以得到的數據。

在下面的示例代碼試井

var teststring = JsonConvert.DeserializeObject<JObject>("{\"user\": {\"id\": \"xxx\"},\"session\": {\"id\": \"xxx\"}"); 
var data = JsonConvert.DeserializeObject<MyJson>(teststring.ToString()); 
var session = data.SessionID; 
var userId = data.UserID; 

我是適當的檢查。它工作正常。

相關問題