http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3816|回复: 1

[其他] 使用Newtonsoft解析json如何根据下标获取数据

[复制链接]
发表于 2014-3-11 15:55:22 | 显示全部楼层 |阅读模式
本帖最后由 marcofly 于 2014-3-11 15:56 编辑

关于Newtonsoft读取json数据,在网上看到的都是使用JsonTextReader,然后,通过while循环读取出来。
如以下代码:
[C#] 纯文本查看 复制代码
string json = @"{
   'CPU': 'Intel',
   'PSU': '500W',
   'Drives': [
     'DVD read/writer'
     /*(broken)*/,
     '500 gigabyte hard drive',
     '200 gigabype hard drive'
   ]
}";

JsonTextReader reader = new JsonTextReader(new StringReader(json));
while (reader.Read())
{
    if (reader.Value != null)
        Console.WriteLine("Token: {0}, Value: {1}", reader.TokenType, reader.Value);
    else
        Console.WriteLine("Token: {0}", reader.TokenType);
}

// Token: StartObject
// Token: PropertyName, Value: CPU
// Token: String, Value: Intel
// Token: PropertyName, Value: PSU
// Token: String, Value: 500W
// Token: PropertyName, Value: Drives
// Token: StartArray
// Token: String, Value: DVD read/writer
// Token: Comment, Value: (broken)
// Token: String, Value: 500 gigabyte hard drive
// Token: String, Value: 200 gigabype hard drive
// Token: EndArray
// Token: EndObject

这种方法不够灵活,比如,我想这样使用:
if(reader[2]=="")  return;
就是想通过下标先对json数据进行读取,而不是遍历一遍。
这是官方文档:http://james.newtonking.com/json/help/index.html#


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-3-11 16:26:28 | 显示全部楼层
[C#] 纯文本查看 复制代码
/// <summary>
        /// 解析Json字符串
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json"></param>
        /// <returns></returns>
        public static T ResolveJson<T>(String json)
        {
            if (String.IsNullOrEmpty(json))
            {
                return default(T);
            }
            T obj = new JavaScriptSerializer().Deserialize<T>(json);
            return obj;
        }


看看这个我自己封装的方法
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 02:00

© 2014-2021

快速回复 返回顶部 返回列表