Использование C# и, в частности, JSON.net, как я могу работать с объектом JSON, который может иметь динамическое значение. Например:Deserialize JSON с неизвестным значением типа
{ "message_id": "123-456", "данные": [ "данные", "список"], "типа": "MSG_TYPE1" }
{ "message_id": "123-457", "данные": "мои строки данных", "типа": "MSG_TYPE2" }
{ "mESSAGE_ID": "123-458", «данные ": {" key1 ":" value1 "," key2 ":" value2 "}, " type ":" MSG_TYPE3 " }
Значение «данные» может быть любого типа. В C# я определил класс ServiceMessage, который содержит эти свойства, но каким типом свойства должны быть «данные». Я смотрел на JToken или JContainer, но я не уверен, что лучший способ реализовать.
public class ServiceMessage
{
public string message_id { get; set; }
public JContainer data { get; set; }
public string type { get; set; }
public string getJSON()
{
string json = JsonConvert.SerializeObject(this);
return json;
}
public void setJSON(string json)
{
dynamic jsonObj = JsonConvert.DeserializeObject(json);
this.message_id = jsonObj.message_id;
this.type = jsonObj.type;
this.data = // what goes here.
}
}
вы знаете, что они реальную структуру объекта данных во время компиляции или будет содержать каждое сообщение разные значения? как вы ожидаете поискать значение данных? – dbarnes
Я буду знать фактическую структуру объекта данных на основе типа сообщения. Если я знаю, что сообщение принадлежит MSG_TYPE1, тогда я узнаю структуру объекта. – Hugh
@ Огромный, трудно иметь строго типизированный объект, не зная точно, как вы планируете получить доступ к объекту, который вы можете сделать с помощью генериков, но я уверен, что это вызовет больше проблем, чем это стоит. Как вы ожидаете получить доступ к данным, когда они попадут на провод? – dbarnes