繁体   English   中英

WCF反序列化JSON字符串

[英]WCF Deserialize JSON String

我已经编辑了我的问题:

我如何反序列化JSON字符串,如下所示:

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

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

建议您如下使用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;
}

POST请求的有效负载似乎是JSON格式,因此您应该使用JSON解析库来解析它,例如Json.NET 然后,您将编写如下内容:

JsonConvert.DeserializeObject<YourRequestObject>(res)

您可以像这样读取Json字符串

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

        string acctId= stuff.acctId;

但是您要解析的响应字符串应为json格式。

我认为下面的代码应达到您的目的:

    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);

让我知道这是否对您不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM