WCF десериализует строку JSON

#c# #wcf

#c# #wcf

Вопрос:

Я отредактировал свой вопрос :

Как я могу десериализовать строку JSON, показано ниже :

 "{"acctId": "Test10001","amount": 200,"currency": "USD","Code": "Test","serialNo": "1234566789asdsad0"}"
  

Пожалуйста, дайте предложение, как я могу получить данные, используя этот метод или любой другой рекомендуемый метод.

Комментарии:

1. предоставьте полную функцию

2. res является строкой JSON. Поэтому использование HttpUtility.ParseQueryString(res); здесь неверно. Десериализуйте res с помощью сериализатора JSON, например JSON.NET

3. если это другой способ десериализации без использования другой библиотеки?

Ответ №1:

Предлагаю вам использовать StreamWriter , как показано ниже. Используйте эту функцию и передайте свою строку и верните поток, который предоставит вам желаемое содержимое JSON

 public static Stream GenerateStreamFromString(string s)
{
         MemoryStream stream = new MemoryStream();
         StreamWriter writer = new StreamWriter(stream);
         writer.Write(s);
         writer.Flush();
         stream.Position = 0;
         return stream;
}
  

Ответ №2:

Полезная нагрузка вашего запроса POST, похоже, находится в формате JSON, поэтому для ее анализа следует использовать библиотеку синтаксического анализа JSON, такую какJson.NET. Тогда вы бы написали что-то вроде:

 JsonConvert.DeserializeObject<YourRequestObject>(res)
  

Ответ №3:

Я думаю, что приведенный ниже код должен служить вашей цели:

     public class DeserializedData
    {
        public string acctId { get; set; }
        public string amount { get; set; }
        public string currency { get; set; }
        public string Code { get; set; }
        public string serialNo { get; set; }
    }    

StreamReader reader = new StreamReader(streamdata);
string res = reader.ReadToEnd();
  

Используйте сторонние библиотеки DLL, такие как Json.NET или Restsharp:

1.) Используя Json.Сеть Json.NET

 var result = JsonConvert.DeserializeObject<DeserializedData>(res);
  

2.) Используя Restsharp Restsharp

 var jsonDeserializer = new RestSharp.Deserializers.JsonDeserializer();
var response = jsonDeserializer.Deserialize<DeserializedData>(res);
  

Дайте мне знать, если у вас это не сработает.

Комментарии:

1. Спасибо, это работает. Вы экономите мое время, еще раз спасибо =)

2. Не волнуйся, приятель!!

3. @saket ваша ошибка исправлена?

Ответ №4:

вы можете прочитать строку Json следующим образом

 dynamic stuff = JObject.Parse(res.ToString());

        string acctId= stuff.acctId;
  

Но строка ответа, которую вы анализируете, должна быть отформатирована в формате json.