2015-10-15 99 views
2

現有對象我使用填充類Json.Net這樣的:上面填充使用JSON

var account = JsonConvert.DeserializeObject<Account>(result.ToString()); 

結果JSON字符串填充幾個屬性在我Account類。我後來有了一個新的JSON字符串,並且希望使用其餘屬性填充相同的Account類。這可能使用JSON.NET或JsonConvert方法嗎?我基本上想追加/添加到我已經在上面的代碼行填充的帳戶對象。

我的類:

public class Account 
{ 
    public string CID { get; set; }    
    public string jsonrpc { get; set; } 
    public string id { get; set; } 
    public List<string> mail { get; set; } 
    public List<string> uid { get; set; } 
    public List<string> userPassword { get; set; }    
} 
+1

你提前知道哪些屬性將被填充在第一和第二次的時間? – mason

+0

是的。前3個屬性將首先填充,然後是最後3個。 – obautista

+2

因此聽起來像手動硬編碼那樣會很簡單。像'MyObject.mail = NewObject.mail; MyObject.mail = NewObject.uid; MyObject.userPassword = NewObject.userPassword;' – mason

回答

2

是的,你可以使用JsonConvert.PopulateObject()填寫性質從第二JSON字符串現有的對象上。

下面是一個例子:

string json1 = @" 
{ 
    ""CID"": ""13579"", 
    ""jsonrpc"": ""something"", 
    ""id"": ""24680"" 
}"; 

Account account = JsonConvert.DeserializeObject<Account>(json1); 

string json2 = @" 
{ 
    ""mail"": [ ""[email protected]"", ""[email protected]"" ], 
    ""uid"": [ ""87654"", ""192834"" ], 
    ""userPassword"": [ ""superSecret"", ""letMeInNow!"" ] 
}"; 

JsonConvert.PopulateObject(json2, account); 

Console.WriteLine("CID: " + account.CID); 
Console.WriteLine("jsonrpc: " + account.jsonrpc); 
Console.WriteLine("id: " + account.id); 
Console.WriteLine("mail: " + string.Join(", ", account.mail)); 
Console.WriteLine("uid: " + string.Join(", ", account.uid)); 
Console.WriteLine("userPassword: " + string.Join(", ", account.userPassword)); 

輸出:

CID: 13579 
jsonrpc: something 
id: 24680 
mail: [email protected], [email protected] 
uid: 87654, 192834 
userPassword: superSecret, letMeInNow! 

小提琴:https://dotnetfiddle.net/621bfV