在后面的代码中反序列化JSON字符串

时间:2011-12-20 16:19:20

标签: c# asp.net .net json web

是否有其他方法反序列化JSON字符串,而不是使用Newtonsoft库?我有一个像

这样的字符串
string json = "{status : '1',message : '<tr><th>Date</th><th>Description</th><th>Reference</th>  <th>Code</th><th>Dept Code</th><th>Debit</th><th>Credit</th></tr>'}";

如果我想访问代码隐藏文件中的message属性,我该怎么做?

3 个答案:

答案 0 :(得分:4)

您可以使用DataContractJsonSerializer。将其反序列化为具有要提取内容的类,例如

[DataContract]
public class Message
{
    [DataMember]
    public string message { get; set; }
}

答案 1 :(得分:2)

考虑一下:

您需要这个必需的命名空间:

using System.Web.Script.Serialization;

考虑这个课程:

[Serializable]
public class Foo
{
   public int status { get; set; }
   public string message { get; set; }
}
使用SerializableAttribute

需要

JavaScriptSerializer

USAGE

JavaScriptSerializer serializer = new JavaScriptSerializer();

// Deserialize

Foo foo = serializer.Deserialize<Foo>(json);

//now you have access to...

var status = foo.status;
var message = foo.message;

您也可以使用JavaScriptSerializer中的Dictionary进行反序列化。见:

Dictionary<string, object> ds = serializer .Deserialize<Dictionary<string, object>>(json);

var status = ds["status"].ToString();
var message = ds["message"].ToString();

答案 2 :(得分:0)

  1. 创建课程

     public class TestM
        {
            public string status { get; set; }
            public string message { get; set; }
        }
    
  2. 在代码中使用它

     JavaScriptSerializer ser = new JavaScriptSerializer();
     TestM t =  ser.Deserialize<TestM>("{status : '1',message : '<tr><th>Date</th><th>Description</th><th>Reference</th>  <th>Code</th><th>Dept Code</th><th>Debit</th><th>Credit</th></tr>'}");