1

Is there is any other way deserialize JSON string,rather than using the Newtonsoft library? I've a string like

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>'}";

if i want to access the message property in code behind file, how can i do that?

gdoron
  • 147,333
  • 58
  • 291
  • 367
Arooran
  • 637
  • 1
  • 17
  • 31

3 Answers3

4

You could use the DataContractJsonSerializer. Deserialize it as a class with what you want to extract, e.g.

[DataContract]
public class Message
{
    [DataMember]
    public string message { get; set; }
}
Tim S.
  • 55,448
  • 7
  • 96
  • 122
  • Which namespace do i need to use for that?thanks for your prompt answer – Arooran Dec 20 '11 at 16:26
  • DataContractJsonSerializer is in System.Runtime.Serialization.Json. DataContractAttribute and DataMemberAttribute are in System.Runtime.Serialization. The Message class can be in the namespace of your choosing. – Tim S. Dec 20 '11 at 16:27
2

Consider this:

You need this required namespaces:

using System.Web.Script.Serialization;

Consider this class:

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

SerializableAttribute is required to work with 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;

You may also deserialize with JavaScriptSerializer in a Dictionary. See this:

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

var status = ds["status"].ToString();
var message = ds["message"].ToString();
Abdul Munim
  • 18,869
  • 8
  • 52
  • 61
  • Which namespace do i need to call for this. thanks for your reply – Arooran Dec 20 '11 at 16:34
  • Added namespace on the answer, please check – Abdul Munim Dec 20 '11 at 16:38
  • i got an error when passing a table data as message property. Invalid object passed in, ':' or '}' expected. (37): {status : 1 , message : '
    DateDescriptionReferenceNominal CodeDept CodeDebitCredit
    21/11/2011Nov depreciation Dep jnl
    11501000.0050.00
    '}
    – Arooran Dec 20 '11 at 16:56
  • You can't use `'` within a string, it must be escaped with `\'` – Abdul Munim Dec 20 '11 at 17:21
0
  1. Create class

     public class TestM
        {
            public string status { get; set; }
            public string message { get; set; }
        }
    
  2. Than use this in your code

     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>'}");
    
Abdul Munim
  • 18,869
  • 8
  • 52
  • 61
dotnetstep
  • 17,065
  • 5
  • 54
  • 72