Json.Net Parse json другого формата

  1. Пример программы Chat Room, созданной с помощью NodeJs.
  2. Сервер Node.js ответит на 3 разных формата Json.
  3. Я создал программу Winform для приема Json из Websocket.
  4. Я использую Json.NET JsonMessage jsonResponse = JsonConvert.DeserializeObject (e.Message.ToString ()); десериализовать один формат Node.js
  5. Как определить другой формат Json при сериализации?

три типа формата Json

  1. цвет: "{\" тип \ ": \" цвет \ ", \" данные \ ": \" синий \ "}"

  2. message: "{\" тип \ ": \" сообщение \ ", \" действие \ ": \" Изменить цвет \ "}»

  3. история: "{\" тип \ ": \" история \ ", \" данные \ ": [{\" время \ ": 1384825833181, \" текст \ ": \" это тест \ ", \" автор \ ": \" Том \ ", \" цвет \ ": \" зеленый \ "}, {\" время \ ": 1384842730192, \" текст \ ": \" Отправка WinForm \ ", \" автор \ ": \ "WinForm Say Hello! \", \ "Color \": \ "orange \"}, {\ "time \": 1384842808185, \ "text \": \ "WinForm Send Again !!! \", \ "автор \ ": \" WinForm Say Hello! \ ", \" Color \ ": \" red \ "}, {\" time \ ": 1384843229766, \" text \ ": \" Я в порядке \ ", \" автор \ ": \" кто ты \ ", \" цвет \ ": \" красный \ "}]}"

Все 3 формата Json могут создавать 3 разных класса с JsonProperty для их сопоставления. Я могу проверить строку с первыми несколькими символами. Есть ли другие решения?

Я обнаружил, что следующее решение может помочь.

  1. Используйте JsonCreationConverter. Как реализовать пользовательский JsonConverter в JSON.NET для десериализации списка объектов базового класса?

  2. Используйте JavaScriptSerializer с динамическим типом Анализируйте строку json с помощью JSON.NET

    var jss = new JavaScriptSerializer();
    dynamic data = jss.Deserialize<dynamic>(e.Message.ToString());
    
  3. Используйте JObject.Parse с динамическим типом Десериализуйте объект json в динамический объект, используя Json.net


person chunhunghan    schedule 19.11.2013    source источник
comment
Я обнаружил, что JsonCreationConverter может помочь. stackoverflow.com/questions/8030538/   -  person chunhunghan    schedule 20.11.2013


Ответы (1)


Сериализованные данные представляют собой строку, поэтому это просто строка. Как вы также сказали, вы хотите идентифицировать формат JSON. Итак, лучше сначала преобразовать в JSON, а затем определить тип данных JSON и в зависимости от типа вызвать процесс или метод для обработки этих данных.

person Shakti Shrestha    schedule 20.11.2013
comment
по вашему предложению. Я нашел второе решение использовать JavaScriptSerializer с динамическим типом. Благодарю. - person chunhunghan; 20.11.2013