【问题标题】:DataContractJsonSerializer ReadObject() returning null valueDataContractJsonSerializer ReadObject() 返回空值
【发布时间】:2014-10-06 05:06:02
【问题描述】:

我正在尝试反序列化 JSON 数据,以便我可以将这些值插入到我的数据库中,但我不断在 sts.text 获得空值。有人可以帮忙吗?谢谢

这是我的数据合同

[DataContract]
internal class Statuses
{
    [DataMember(Name = "text", IsRequired = false)]
    internal string text;
}


        try
        {
            HttpWebResponse webResponse = webRequest.GetResponse() as HttpWebResponse;
            Stream dataStream = webResponse.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();

            DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Statuses));
            MemoryStream ms = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(responseFromServer));

            Statuses sts = (Statuses)js.ReadObject(ms);                
            Console.WriteLine("text: " + sts.text);

        }
        catch (Exception ex)
        {
        }

【问题讨论】:

  • responseFromServer 的值是多少?我正在尝试对此进行测试,但我需要 JSON 数据。

标签: asp.net .net json


【解决方案1】:

这对我有用:

    // Read the content.
    const string responseFromServer = "{\"text\":\"testing\"}"; //Add JSON

    var js = new DataContractJsonSerializer(typeof(Statuses));
    var ms = new MemoryStream(Encoding.UTF8.GetBytes(responseFromServer));

    var sts = (Statuses)js.ReadObject(ms);
    Response.Write("text: " + sts.text);

另外值得注意的是,我将 internal 访问修饰符 转换为 public 访问修饰符

[DataContract]
public class Statuses
{
    [DataMember(Name = "text", IsRequired = false)]
    public string text;
}

另请注意,我改变了:

System.Text.ASCIIEncoding.ASCII.GetBytes(responseFromServer)

与:

Encoding.UTF8.GetBytes(responseFromServer)

我从测试中得到的最终输出是:

文本:测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多