比如客户端传了一个字符串给我
{
"data":
{
"mobile":
{
"platform":"2.2",
"model":"generic|sdk",
"versioncode":"20111125",
"versionname":"1.2.0",
"web_domain":"http://www.baidu.com",
"ip":"",
"dns1":"",
"dns2":"",
"channel_id":"0"
}
}
}在不创建类的情况下,如何获取到每个值啊

解决方案 »

  1.   

    http://json.codeplex.com/Json.NETJson.NET is a popular high-performance JSON framework for .NET
      

  2.   

    看了一下,json。net也是需要先弄一个类,然后泛型获得。2楼可能没明白我的需求
      

  3.   

    用现成的代码库:http://json.codeplex.com/
      

  4.   

    下载Newtonsoft.Json.dll
                string str = @"{
    ""data"":
    {
    ""mobile"":
    {
    ""platform"":""2.2"",
    ""model"":""generic|sdk"",
    ""versioncode"":""20111125"",
    ""versionname"":""1.2.0"",
    ""web_domain"":""http://www.baidu.com"",
    ""ip"":"""",
    ""dns1"":"""",
    ""dns2"":"""",
    ""channel_id"":""0""
    }
    }
    }";
                JavaScriptObject json = (JavaScriptObject)JavaScriptConvert.DeserializeObject(str);
                JavaScriptObject data = (JavaScriptObject)json["data"];
                JavaScriptObject mobile = (JavaScriptObject)data["mobile"];
                Console.WriteLine("{0} {1} {2}", mobile["platform"], mobile["model"], mobile["versioncode"]);
      

  5.   

    7楼
    JavaScriptObject 是哪里来的啊
      

  6.   


    我在6楼已经告诉你了呀,在 ttp://json.codeplex.com/
      

  7.   

    9楼 10楼我已经下载了Newtonsoft.Json.dll,并且已经引用了但是只有JavaScriptConvert这个类是能支持的JavaScriptObject 还是报错。是不是版本问题?谁能把dll发我,谢谢
    [email protected]        JavaScriptObject json = (JavaScriptObject)Newtonsoft.Json.JavaScriptConvert.DeserializeObject(str);
            JavaScriptObject data = (JavaScriptObject)json["data"];
            JavaScriptObject mobile = (JavaScriptObject)data["mobile"];错误 1 找不到类型或命名空间名称“JavaScriptObject”(是否缺少 using 指令或程序集引用?)
      

  8.   


    去 http://json.codeplex.com/ 下载Json.NET,
    下载的文件里面包含了教程和示范程序。
      

  9.   

    还有一点  JSON的 格式你肯定要自己去分析 把字段拿出来JSON的格式也是多样的
      

  10.   


    你说的是PHP吧。我见过PHP程序员把JSON按照key-value的形式一项一项地分析。.Net没有PHP那么老土的。在.Net里面JSON的格式可以通过序列化与反序列化来创建、解析。
      

  11.   

    XinYaping使用的json.net我还没用过。今天也下来看看。
    我一般用.net自带的序列化和反序列化进行转换。
    using System.Web.Script.Serialization;        /// <summary>
            /// 序列化对象转JSON字串
            /// </summary>
            /// <param name="m_Model"></param>
            /// <returns></returns>
            public static string SerializeJson(object m_Model)
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                return js.Serialize(m_Model);
            }
    /// <summary>
            /// 反序列化JSON字串转T对象
            /// 参考字串:{RoleName:'角色2',ShopName:'店铺2'}
            /// 参考IList字串:[{\"RoleName\":\"角色1\",\"ShopName\":\"店铺1\"},{\"RoleName\":\"角色2\",\"ShopName\":\"店铺2\"}]
            /// </summary>
            /// <param name="p_JsonStr"></param>
            /// <returns></returns>
            public static T DeserializeJson<T>(string p_JsonStr)
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                return js.Deserialize<T>(p_JsonStr);
            }
      

  12.   

    嗯,你说的这个.Net自带的JSON序列化/反序列化方法,当然也OK我以前之所以用 http://json.codeplex.com/ ,是因为,.Net自带的JSON序列化/反序列化方法是从.Net 3.5才开始出现的,在这之前的.Net版本中是没有的。
      

  13.   

    http://json.codeplex.com/ 下载下来3.5的dll根本就没有Newtonsoft.Json.JavaScriptConvert这个方法
      

  14.   

    我现在需要的并不是序列化和反序列化。而是不需要自定义类的序列化。
    .net 3.5自带的序列化需要我根据结构自己先定义一个类,然后才能序列化
    我要的是可以不用定义类就能直接拿数据的办法啊
      

  15.   


    Newtonsoft.Json,它有它自己的方法。你下载下来的文件里面应该包含教程和例子,自己看看是哪个方法吧。
      

  16.   


    JSON.Net也支持按key-value的形式来解析JSON字符串。同样建议你看它自带的教程和例子。
      

  17.   

    lz还没解决?
    我上传到我的资源里了,那个.dll也在里面
    http://download.csdn.net/detail/huangwenquan123/4106165
      

  18.   

    http://json.codeplex.com 呵呵 找到了
      

  19.   

    新版的方法是用JsonTextReader暴力枚举每一个元素,然后把需要的读出来。
      

  20.   

    要using using Newtonsoft.Json.Linq;
    里面有 JObject 和 JArray的定义,用法和java里面一样。object obj = JsonConvert.DeserializeObject(onlinedata);
    JObject js = obj as JObject;
    JArray ja = js["data"] as JArray;
     
    List<string> uidlist = new List<string>();
    for (int i = 0; i < ja.Count; i++)
    {
          JObject jo = ja[i] as JObject;
          uidlist.Add(jo["uid"].ToString());
     
    }  
      

  21.   

    靠,我也是不想创建类直接取数据,就像java里的JSONObject那样,创建什么类啊,多累啊谢谢25L的demo