2015-10-15 2 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! 

Fiddle: https://dotnetfiddle.net/621bfV