如何访问Json.net中的所有JProperties子值?

时间:2014-10-23 11:00:38

标签: c# json json.net

我试图用Json.NET在我的C#代码中解析Json。 我想在父母之后打印每个标记的子元素。 我的JSON字符串是这样的(但很长):

 {
    "type": "ExpressionStatement",
    "expression": {
      "type": "CallExpression",
      "callee": {
        "type": "FunctionExpression",
        "id": null,
        "params": [
          {
            "type": "Identifier",
            "name": "E"
          },
          {
            "type": "Identifier",
            "name": "B"
          }
      ]
    }
  }
}

并且我正在尝试这个代码用于我的目的,并且在第一次我检查JProperties的值,如果有一些东西以'''开头,它将它再次解析它,否则打​​印出来:(r是我的Json字符串)

JObject a = JObject.Parse(r);
            ArrayList ab= new ArrayList();
            String reg=@"{[-a-zA-Z0-9_~,'"":\s]*}\s*,\s*{[-a-zA-Z0-9~,'"":\s]*}";
            ab.Add(a);
                for (int i = 0; i < ab.Count; i++ )
                {
                    JObject d=ab[i] as JObject;
                    foreach (JProperty p in (d.Children()))
                    {
                        String val = p.Value.ToString();
                        if( val.StartsWith("[")){
                            val=val.Substring(2,val.Length-2);
                            if(Regex.Match(val,reg).Success)
                            {
                                String reg2 = @"},\s*{";
                                 int num=Regex.Match(val,reg2).Index;
                                 String val1 = val.Substring(0,num+1);
                                 JObject newob = JObject.Parse(val1);
                                 ab.Add(newob);
                                 val = val.Substring(num+3);
                                 newob = JObject.Parse(val);
                                 ab.Add(newob);
                            }
                            if (!val.Equals("")) { 
                            JObject newob=JObject.Parse(val);
                            ab.Add(newob);}
                        }
                        else if (val.StartsWith("{"))
                        {
                            if (!val.Equals(""))
                            {
                                JObject newob = JObject.Parse(val);
                                ab.Add(newob);
                            }
                        }
                        else
                        {
                            Console.WriteLine("value is: {0}", p.Value);
                        }
                  }
                }

但是子字符串始终存在错误....它们总是不正确! 谁能帮助我?还是给我新的方式?

注意:我不知道JSON字符串,而且每次都不一样

0 个答案:

没有答案