WCF反序列化JSON字符串

时间:2016-10-20 04:46:23

标签: c# wcf

我编辑了我的问题:

如何反序列化下面显示的JSON字符串:

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

请提供建议如何使用此方法或任何其他推荐方法获取数据。

4 个答案:

答案 0 :(得分:2)

建议您使用StreamWriter,如下所示。 使用此函数并传递您的字符串并返回一个Stream,它将为您提供所需的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;
}

答案 1 :(得分:1)

POST请求的有效负载似乎是JSON格式,因此您应该使用JSON解析库来解析它,例如Json.NET。然后你会写一些类似的东西:

JsonConvert.DeserializeObject<YourRequestObject>(res)

答案 2 :(得分:0)

你可以像这样阅读Json字符串

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

        string acctId= stuff.acctId;

但是你要解析的响应字符串应该是json格式的。

答案 3 :(得分:0)

我认为以下代码应该符合您的目的:

    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.Net Json.NET

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

2。)使用Restsharp Restsharp

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

如果它不适合你,请告诉我。