C#如何将json对象反序列化为字符串

时间:2015-04-24 09:42:15

标签: c# json serialization json-deserialization

我试图将json对象反序列化为来自Web服务的字符串,但我无法做到。 我试图放置[IgnoreDataMember]属性,但它将其设置为null。

我要这样做:

DataContractJsonSerializer MySerializer = new DataContractJsonSerializer(typeof(Response));
Response response = (Response)MySerializer.ReadObject(new MemoryStream(Encoding.Unicode.GetBytes(e.Result)));

这是我的Response类:

public class Reponse
{
    [DataMember]
    public data1 { get; set; }

    [DataMember]
    public List<AnotherData> data2 { get; set; }
}

public class AnotherData
{
      [DataMember]
       public string name { get; set; }

       public object object1 {get; set;}

}

我想将名为object1的JSON对象反序列化为字符串而不是对象。我怎么能这样做?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您应该使用继承自IDispatchMessageFormatter的自定义调度程序创建自定义行为。请使用此exemple并进行更新。

在DeserializeRequest方法中,您将阅读以下消息:

var bodyReader = message.GetReaderAtBodyContents();
        bodyReader.ReadStartElement("Binary");
        byte[] rawBody = bodyReader.ReadContentAsBase64();
        MemoryStream ms = new MemoryStream(rawBody);
        StreamReader sr = new StreamReader(ms);
        string content = string.Empty;
        using (StreamReader reader = new StreamReader(ms, Encoding.UTF8))
        {
            content = reader.ReadToEnd();
        }