0

I have JSON string that come from a WebService. I have use this code to convert it to object.

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
object cw_values = serializer.DeserializeObject(cw_stringData);

Where cw_stringData is my JSON.

It returns an object{object[69]} to me. for example it means that it contains 69 items as its first level.

I have convert it again by this code.

object[] final_cw_values = ((object[])(cw_values));

So now final_cw_values has type object[] .

Each 69 items in final_cw_values have this type.

object {System.Collections.Generic.Dictionary<string,object>}

That have 15 items in it.

Each inner item have type:

System.Collections.Generic.KeyValuePair<string,object>

That contain one Key and one Value.

I need to have these Value in an Array.

If I click at Value and click Add to Watch I have some code like this but it don't work in my code.

(new System.Collections.Generic.Mscorlib_DictionaryDebugView<string,object>(((System.Collections.Generic.Dictionary<string,object>)(final_cw_values[0])))).Items[0].Value

This is part of my JSON:

[
  {
    "FirstWeight": -1,
    "SecondWeight": 0,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:rowspan,3;SecondWeight:rowspan,3;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.2 اندازه در بورس",
    "Hidden2": "202       ",
    "ThirdLevel": "2.2.1 ارزش بازار (م ر)",
    "Hidden3": "10031     ",
    "ProfileCode": "1",
    "ThirdWeight": 22,
    "FirstEffectiveWeight": 50,
    "SecondEffectiveWeight": 25,
    "ThirdEffectiveWeight": 5.5,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.2 اندازه در بورس",
    "Hidden2": "202       ",
    "ThirdLevel": "2.2.2 درصد سهام شناور آزاد (%)",
    "Hidden3": "10036     ",
    "ProfileCode": "1",
    "ThirdWeight": 52,
    "FirstEffectiveWeight": 50,
    "SecondEffectiveWeight": 25,
    "ThirdEffectiveWeight": 13,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.2 اندازه در بورس",
    "Hidden2": "202       ",
    "ThirdLevel": "2.2.3 ارزش بازار شناور آزاد (م ر)",
    "Hidden3": "10053     ",
    "ProfileCode": "1",
    "ThirdWeight": 12,
    "FirstEffectiveWeight": 50,
    "SecondEffectiveWeight": 25,
    "ThirdEffectiveWeight": 3,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": 0,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:rowspan,5;SecondWeight:rowspan,5;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.3 نفدشوندگی سهام در بورس",
    "Hidden2": "203       ",
    "ThirdLevel": "2.3.1 تعداد روزهای بدون معامله اخیر",
    "Hidden3": "10066     ",
    "ProfileCode": "1",
    "ThirdWeight": 2,
    "FirstEffectiveWeight": 50,
    "SecondEffectiveWeight": 25,
    "ThirdEffectiveWeight": 0.5,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.3 نفدشوندگی سهام در بورس",
    "Hidden2": "203       ",
    "ThirdLevel": "2.3.2 تعداد روزهای معامله شده در ​​سال جاری",
    "Hidden3": "10095     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.3 نفدشوندگی سهام در بورس",
    "Hidden2": "203       ",
    "ThirdLevel": "2.3.3 متوسط تعداد روزهای معامله شده در سال",
    "Hidden3": "10131     ",
    "ProfileCode": "1",
    "ThirdWeight": 15,
    "FirstEffectiveWeight": 50,
    "SecondEffectiveWeight": 25,
    "ThirdEffectiveWeight": 3.75,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.3 نفدشوندگی سهام در بورس",
    "Hidden2": "203       ",
    "ThirdLevel": "2.3.4 تعداد معاملات در سال جاری",
    "Hidden3": "10135     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": 0,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:rowspan,4;SecondWeight:rowspan,4;",
    "class": "not-editable-row",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.4 قیمت سهام در بورس",
    "Hidden2": "204       ",
    "ThirdLevel": "2.4.1 قیمت پابانی",
    "Hidden3": "10185     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "class": "not-editable-row",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.4 قیمت سهام در بورس",
    "Hidden2": "204       ",
    "ThirdLevel": "2.4.3 پایین ترین قیمت در 52 هفته گذشته",
    "Hidden3": "10304     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": -1,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:display,none;SecondWeight:display,none;",
    "class": "not-editable-row",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.4 قیمت سهام در بورس",
    "Hidden2": "204       ",
    "ThirdLevel": "2.4.4 متوسط قیمت در 12 هفته گذشته",
    "Hidden3": "10312     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  },
  {
    "FirstWeight": -1,
    "SecondWeight": 0,
    "attr": "FirstLevel:display,none;FirstWeight:display,none;SecondLevel:rowspan,5;SecondWeight:rowspan,5;",
    "FirstLevel": "2. معیارهای معاملاتی",
    "Hidden1": "2         ",
    "SecondLevel": "2.5 بازدهی سهام در بورس",
    "Hidden2": "205       ",
    "ThirdLevel": "2.5.1 آخرین بازده روزانه (%)",
    "Hidden3": "10186     ",
    "ProfileCode": "1",
    "ThirdWeight": 0,
    "FirstEffectiveWeight": 0,
    "SecondEffectiveWeight": 0,
    "ThirdEffectiveWeight": 0,
    "Clustering": 1
  }
]

Mohammad

Mohammad
  • 1,474
  • 2
  • 11
  • 20

1 Answers1

3

Better if you create strongly typed class.

public class Data
{
    public int FirstWeight { get; set; }
    public int SecondWeight { get; set; }
    public string attr { get; set; }
    public string FirstLevel { get; set; }
    public string Hidden1 { get; set; }
    public string SecondLevel { get; set; }
    public string Hidden2 { get; set; }
    public string ThirdLevel { get; set; }
    public string Hidden3 { get; set; }
    public string ProfileCode { get; set; }
    public int ThirdWeight { get; set; }
    public int FirstEffectiveWeight { get; set; }
    public int SecondEffectiveWeight { get; set; }
    public double ThirdEffectiveWeight { get; set; }
    public int Clustering { get; set; }
}

And convert like

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Data> lstValues = serializer.Deserialize<List<Data>>(cw_stringData);
Rashmin Javiya
  • 5,173
  • 3
  • 27
  • 49
  • it is possible using NewtonSoftJson library http://www.nuget.org/packages/newtonsoft.json/ I reckon, you can also use serializer.Deserialize which will return dynamic object if you are ok with it. Nonetheless, Rashmin answer is best approach – aamir sajjad May 12 '14 at 05:40
  • NewtonJson is external library, if .Net framework provides facility why do we use 3rd party library. :) – Rashmin Javiya May 12 '14 at 05:43
  • I agree. However, NewtonSoftJson has few additional methods which can be helpful. Nonetheless, in this problem context you are right. it was just suggestion from my side. – aamir sajjad May 12 '14 at 05:54
  • Yes you are right too! in certain cases NewtonJson is good and has much more features. but here JavaScriptSerializer could handle easily. – Rashmin Javiya May 12 '14 at 05:56
  • Thanks for your fast Answer – Mohammad May 12 '14 at 06:18