代码之家  ›  专栏  ›  技术社区  ›  Theofanis Pantelides

查询JSON字符串

  •  0
  • Theofanis Pantelides  · 技术社区  · 16 年前

    有没有一种方法可以查询特定项的JSON(字符串)?

    即:

    String jSon = "{\"a\":{\"b\":27472483,\"c\":\"123\"}}";
    

    Int32 bob = (Int32)getFromJSON("a.b", jSon);
    // bob == 27472483
    

    非常感谢。 -西奥

    2 回复  |  直到 16 年前
        1
  •  1
  •   David Hedlund    16 年前

    这里要做的是将JSON字符串反序列化为C对象,然后从那里访问“b”属性。 More on that here

        2
  •  0
  •   Theofanis Pantelides    16 年前
        public T getFromJSON<T>(String sel, String jSon)
        {
            String[] id = sel.Split('.');
            Object tmp = jSon;
    
            for (int i = 0; i < id.Length; i++)
            {
                tmp = tmp.ToString().Split(new string[] { "\"" + id[i] + "\":" }, StringSplitOptions.None)[1];
            }
    
            Boolean isString = false;
            if (tmp.ToString().StartsWith("\""))
            {
                tmp = tmp.ToString().Substring(1);
                isString = true;
            }
    
            tmp = tmp.ToString().Split(new char[] { '}', ']', '"' }, StringSplitOptions.None)[0];
    
            if (!isString && tmp.ToString().EndsWith(","))
                tmp = tmp.ToString().Substring(0, tmp.ToString().Length - 1);
    
            if (typeof(T) == typeof(Int32))
                tmp = Int32.Parse(tmp.ToString());
    
            return (T)tmp;
        }
    

    推荐文章