2014-10-06 123 views
0

我想反序列化JSON數據,以便我可以將值插入到我的數據庫中,但我一直在sts.text獲取空值。有人可以協助嗎?感謝DataContractJsonSerializer ReadObject()返回空值

這裏是合同我的數據

[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) 
     { 
     } 
+0

什麼responseFromServer的值?我試圖測試這個,但我需要JSON數據。 – 2014-10-06 20:01:56

回答

0

這爲我工作:

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

另外值得一提的,我轉換內部訪問修飾符公共訪問修飾符

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

另外請注意,我改變了:

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

有了:

Encoding.UTF8.GetBytes(responseFromServer) 

以及最終輸出,我從我的測試得到的是:

文本:測試