精华内容
下载资源
问答
  • 遍历json对象,转为DataTable JObject jo = JObject.Parse(json); if (jo.Property("data") == null) return "json解析错误"; //获取数据 JArray data = (JArray)jo["data"]; if (data.Count == 0) return ...
    1. 添加引用
      using Newtonsoft.Json.Linq;

    2. 遍历json对象,转为DataTable

    
    JObject jo = JObject.Parse(json);
    if (jo.Property("data") == null)
         return "json解析错误";
    
    //获取数据
    JArray data = (JArray)jo["data"];
    if (data.Count == 0)
         return "数据条数为0";
                
    //数据主体
    try
    {
        DataTable dt = new DataTable();
        JObject job = (JObject)data[0];
        foreach (var v in job)
        {
            dt.Columns.Add(v.Key);
        }
        for (int i = 0; i < data.Count; i++)
        {
             JObject data1 = (JObject)data[i];
             DataRow dr = dt.NewRow();
             foreach (var v in data1)
             {
                dr[v.Key] = (v.Value.ToString() == "" ? null :v.Value.ToString());
             }
             dt.Rows.Add(dr);
        }
       //批量插入数据
    string str_sql_conn = System.Configuration.ConfigurationManager.AppSettings["SqlConnString"].ToString();
    //略……
    }catch (Exception e)
    {
        msg = e.Message.ToString();
    }
    return msg;
    
    展开全文
  • C#遍历对象的方法

    2018-05-02 09:42:00
    //这是一个json字符串 string str="{\"id\":1,\"name\":\"张三\",\"time\":\"2018-05-02T09:02:32.1869172+08:00\",\"money\":23.4,\"str\":[\"a\",\"b\",\"c... //转化为对象 User user =(User) Jayrock.Json....

      //这是一个json字符串

      string str="{\"id\":1,\"name\":\"张三\",\"time\":\"2018-05-02T09:02:32.1869172+08:00\",\"money\":23.4,\"str\":[\"a\",\"b\",\"c\"]}";
       //转化为对象    

       User user =(User) Jayrock.Json.Conversion.JsonConvert.Import(typeof(User),str);

    //获得对象myClass的所有属性组成的集合 propertys   需要引用using System.Reflection;

              PropertyInfo[] p = user.GetType().GetProperties();
                foreach (PropertyInfo pinfo in p)
                {
                    Response.Write("<br>"+pinfo.Name+","+pinfo.GetValue(user,null));
                }


    输出结果
    不知道为什么数组不行

     

    转载于:https://www.cnblogs.com/jksun/p/8978775.html

    展开全文
  • 写 Ajax 程序的时候,经常要和后台服务器进行时实的数据交互...常常是调试很多遍才能对号入座,后来想到了 JSON 这种可以在 javascrip 中很方便就调用的数据格式,所以萌生了想把后台数据生成 JSON格式的想法。之后,在

    写 Ajax 程序的时候,经常要和后台服务器进行时实的数据交互,以前用的是自定义的字符串格式,比如用“,”进行间隔(有时也用很长的没有用的字符串进行区分),然后再在 javascript 代码中对其进行分隔后得到字符数组对应索引的值,常常是调试很多遍才能对号入座,后来想到了 JSON 这种可以在 javascrip 中很方便就调用的数据格式,所以萌生了想把后台数据生成 JSON格式的想法。之后,在网上找了半天,说 framework3.5 已经可以把对象的属性/值对转换成 JSON 数据格式,我看了一下,又是安装 framework 又是导包,到时候服务器还不一定能够支持,所以这个方法就放弃了(放弃这个方法的主要原因是,我在服务器的IIS部署 Web网站时候,需要 framework 各个不同的版本,有的服务器能够一下子搞定,有的怎么都搞不定,所以不想在各个 framework 版本之间挣扎)。

        这个 ToJSONString() 只是用到了对象实例的 GetType() 和 System.Type 的 GetProperties() 方法

    GetProperties() 方法返回 ProtertyInfo 数组,保存的是对象相关的属性和值,(当然还有更多的信息,但对于此处,不是必须的)。

        关键代码在 ToJSONString() 方法,希望对有需要的人些许帮助。

    /*
     * 定义一个测试类
     * 所有属性均为私有,但提供公共访问方法 get 和 set
     */
    public class UserInfo
    {
        public UserInfo()
        {
        }
        public UserInfo(string name, int age, string address, string sex)
        {
            this.Name = name;
            this.Age = age;
            this.Address = address;
            this.Sex = sex;
        }
        public string like;
        private string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;

        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private string _address;

        public string Address
        {
            get { return _address; }
            set { _address = value; }
        }
        private string _sex;

        public string Sex
        {
            get { return _sex; }
            set
            {
                if (value != "女" && value != "男")
                {
                    throw new Exception("性别错误,请在 男/女 中选择一个!");
                }
                _sex = value;
            }
        }
        /*
         * 经测试,公共方法不会在 PropertiesInfo 中
         */
        public string getInfo()
        {
            return "测试公有方法";
        }
        /*
         * 转换成 JSON 字符串之后可以方便在 javascript 访问对象的属性
         * 如 UserInfo 有属性 Name
         * 在 javascript 中可以用 var obj = eval('(jsonString)'); obj.Name 得到其值
         */
        public string ToJSONString()
        {
            System.Reflection.PropertyInfo[] ps = this.GetType().GetProperties();
            string json = "{";
            int index = 1;
            foreach (System.Reflection.PropertyInfo pi in ps)
            {
                //Name 为属性名称,GetValue 得到属性值(参数this 为对象本身,null)
                string name = pi.Name;
                string value = Convert.ToString(pi.GetValue(this, null));
                //把 javascript 中的特殊字符转成转义字符
                value = value.Replace("//", "").Replace("'", "//'").Replace("/"", "///"");
                json += name + ":'" + value + "'";
                if (index != ps.Length)
                {
                    json += ",";
                }
                index++;
            }
            json += "}";
            return json;
        }
        /*
         * 经过以上测试,得到结论,只有当属性使用 get 和 set 进行封装了之后,才在 PropertiesInfo 中出现
         * 即,经过 get/set 封装之后的私有属性可以放心的使用 PropertiesInfo 进行遍历。
         */
    }

    //使用 WebPage 进行输出测试

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            UserInfo u = new UserInfo();
            u.Age = 25;
            u.Name = "吴家龙";
            u.Sex = "男";
            u.Address = "广州市萝岗经'济开发/"区宝//石路11号301";
            u.like = "不知道";//经测试,如果一个属性定义为公有字段,则在 PropertiesInfo 中没有
            UserInfo u1 = new UserInfo("王", 24, "广州市", "女");  
            Response.Write(u.ToJSONString()+"<br/>");
            Response.Write(u1.ToJSONString());
            btnOK.Text = u.ToJSONString();
        }
    }

    //页面代码

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript" src="jquery-1.3.2.js"></script><%--这里使用了 jquery--%>
        <script type="text/javascript">

            $(function(){
                 $("#btnOK").bind("click",function(){
                    var s = $(this).val();               
                    var o = eval('('+ s +')');         
                    alert(o.Name + " " + o.Address);
                    alert(o.Address);
                });

             });


        </script>
    </head>
    <body>
        <form id="form1" runat="server" οnsubmit="return false;">
            asp:Button ID="btnOK" UseSubmitBehavior="false" runat="server"  />
        </form>
    </body>
    </html>

    展开全文
  • 本文是 重温基础 系列文章的第十一篇。... Map和Set对象承载的数据元素可以按照插入时的顺序,被迭代遍历。 1 Set对象介绍: Set数据结构类似数组,但所有成员的值唯一。Set本身为一个构造函数,用来生成Set...

    37425c8a08acd2632c34771c03d8abc0.png

    本文是 重温基础 系列文章的第十一篇。
    今日感受:注意身体,生病花钱又难受。

    本章节复习的是JS中的Map和Set对象,是个集合。

    前置知识:
    Map和Set对象是在ES6中被引入的,作为一种由key值标记的数据容器。
    Map和Set对象承载的数据元素可以按照插入时的顺序,被迭代遍历。

    1 Set对象

    介绍: Set数据结构类似数组,但所有成员的值唯一Set本身为一个构造函数,用来生成Set数据结构,使用add方法来添加新成员。

    let a = new Set();
    [1,2,2,1,3,4,5,4,5].forEach(x=>a.add(x));
    for(let k of a){
        console.log(k)
    };
    // 1 2 3 4 5
    

    基础使用

    let a = new Set([1,2,3,3,4]);
    [...a]; // [1,2,3,4]
    a.size; // 4
    
    // 数组去重
    [...new Set([1,2,3,4,4,4])];// [1,2,3,4]
    

    注意
    * 向Set中添加值的时候,不会类型转换,即5'5'是不同的。

    [...new Set([5,'5'])]; // [5, "5"]
    

    属性和方法
    * 属性:
    * Set.prototype.constructor:构造函数,默认就是Set函数。
    * Set.prototype.size:返回Set实例的成员总数。

    • 操作方法:
      • add(value):添加某个值,返回 Set 结构本身。
      • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
      • has(value):返回一个布尔值,表示该值是否为Set的成员。
      • clear():清除所有成员,没有返回值。
    let a = new Set();
    a.add(1).add(2); // a => Set(2) {1, 2}
    a.has(2);        // true
    a.has(3);        // false
    a.delete(2);     // true  a => Set(1) {1}
    a.clear();       // a => Set(0) {}
    

    数组去重

    let a = new Set([1,2,3,3,3,3]);
    

    2 Set的应用

    数组去重

    // 方法1
    [...new Set([1,2,3,4,4,4])]; // [1,2,3,4]
    // 方法2
    Array.from(new Set([1,2,3,4,4,4]));    // [1,2,3,4]
    

    遍历和过滤

    let a = new Set([1,2,3,4]);
    
    // map 遍历操作
    let b = new Set([...a].map(x =>x*2));// b => Set(4) {2,4,6,8}
    
    // filter 过滤操作
    let c = new Set([...a].filter(x =>(x%2) == 0)); // b => Set(2) {2,4}
    

    获取并集、交集和差集

    let a = new Set([1,2,3]);
    let b = new Set([4,3,2]);
    
    // 并集
    let c1 = new Set([...a, ...b]);  // Set {1,2,3,4}
    
    // 交集
    let c2 = new Set([...a].filter(x => b.has(x))); // set {2,3}
    
    // 差集
    let c3 = new Set([...a].filter(x => !b.has(x))); // set {1}
    
    • 遍历方法:
      • keys():返回键名的遍历器。
      • values():返回键值的遍历器。
      • entries():返回键值对的遍历器。
      • forEach():使用回调函数遍历每个成员

    Set遍历顺序是插入顺序,当保存多个回调函数,只需按照顺序调用。但由于Set结构没有键名只有键值,所以keys()values()是返回结果相同。

    let a = new Set(['a','b','c']);
    for(let i of a.keys()){console.log(i)};   // 'a' 'b' 'c'
    for(let i of a.values()){console.log(i)}; // 'a' 'b' 'c'
    for(let i of a.entries()){console.log(i)}; 
    // ['a','a'] ['b','b'] ['c','c']
    

    并且 还可以使用for...of直接遍历Set

    let a = new Set(['a','b','c']);
    for(let k of a){console.log(k)};   // 'a' 'b' 'c'
    

    forEach与数组相同,对每个成员执行操作,且无返回值。

    let a = new Set(['a','b','c']);
    a.forEach((v,k) => console.log(k + ' : ' + v));
    

    3 Map对象

    由于传统的JavaScript对象只能用字符串当做键,给开发带来很大限制,ES6增加Map数据结构,使得各种类型的值(包括对象)都可以作为键。 Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。 基础使用

    let a = new Map();
    let b = {name: 'leo' };
    a.set(b,'my name'); // 添加值
    a.get(b);           // 获取值
    a.size;      // 获取总数
    a.has(b);    // 查询是否存在
    a.delete(b); // 删除一个值
    a.clear();   // 清空所有成员 无返回
    

    注意
    * 传入数组作为参数,指定键值对的数组

    let a = new Map([
        ['name','leo'],
        ['age',18]
    ])
    
    • 如果对同一个键多次赋值,后面的值将覆盖前面的值
    let a = new Map();
    a.set(1,'aaa').set(1,'bbb');
    a.get(1); // 'bbb'
    
    • 如果读取一个未知的键,则返回undefined
    new Map().get('abcdef'); // undefined
    
    • 同样的值的两个实例,在 Map 结构中被视为两个键。
    let a = new Map();
    let a1 = ['aaa'];
    let a2 = ['aaa'];
    a.set(a1,111).set(a2,222);
    a.get(a1); // 111
    a.get(a2); // 222
    

    遍历方法: Map 的遍历顺序就是插入顺序。keys():返回键名的遍历器。 values():返回键值的遍历器。 entries():返回所有成员的遍历器。 forEach():遍历 Map 的所有成员。

    let a = new Map([
        ['name','leo'],
        ['age',18]
    ])
    
    for (let i of a.keys()){...};
    for (let i of a.values()){...};
    for (let i of a.entries()){...};
    a.forEach((v,k,m)=>{
        console.log(`key:${k},value:${v},map:${m}`)
    })
    

    将Map结构转成数组结构

    let a = new Map([
        ['name','leo'],
        ['age',18]
    ])
    
    let a1 = [...a.keys()];   // a1 => ["name", "age"]
    let a2 = [...a.values()]; // a2 =>  ["leo", 18]
    let a3 = [...a.entries()];// a3 => [['name','leo'], ['age',18]]
    

    4 Map与其他数据结构互相转换

    • Map 转 数组
    let a = new Map().set(true,1).set({f:2},['abc']);
    [...a]; // [[true:1], [ {f:2},['abc'] ]]
    
    • 数组 转 Map
    let a = [ ['name','leo'], [1, 'hi' ]]
    let b = new Map(a);
    
    • Map 转 对象 如果所有 Map 的键都是字符串,它可以无损地转为对象。
      如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名。
    function fun(s) {
      let obj = Object.create(null);
      for (let [k,v] of s) {
        obj[k] = v;
      }
      return obj;
    }
    
    const a = new Map().set('yes', true).set('no', false);
    fun(a)
    // { yes: true, no: false }
    
    • 对象 转 Map
    function fun(obj) {
      let a = new Map();
      for (let k of Object.keys(obj)) {
        a.set(k, obj[k]);
      }
      return a;
    }
    
    fun({yes: true, no: false})
    // Map {"yes" => true, "no" => false}
    
    • Map 转 JSON (1)Map键名都是字符串,转为对象JSON:
    function fun (s) {
        let obj = Object.create(null);
        for (let [k,v] of s) {
            obj[k] = v;
        }
        return JSON.stringify(obj)
    }
    let a = new Map().set('yes', true).set('no', false);
    fun(a);
    // '{"yes":true,"no":false}'
    

    (2)Map键名有非字符串,转为数组JSON:

    function fun (map) {
      return JSON.stringify([...map]);
    }
    
    let a = new Map().set(true, 7).set({foo: 3}, ['abc']);
    fun(a)
    // '[[true,7],[{"foo":3},["abc"]]]'
    
    • JSON 转 Map(1)所有键名都是字符串:
    function fun (s) {
      let strMap = new Map();
      for (let k of Object.keys(s)) {
        strMap.set(k, s[k]);
      }
      return strMap;
      return JSON.parse(strMap);
    }
    fun('{"yes": true, "no": false}')
    // Map {'yes' => true, 'no' => false}
    

    (2)整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组:

    function fun2(s) {
      return new Map(JSON.parse(s));
    }
    fun2('[[true,7],[{"foo":3},["abc"]]]')
    // Map {true => 7, Object {foo: 3} => ['abc']}
    

    参考资料

    1.阮一峰ES6入门

    本部分内容到这结束

    1e5f5be1a7234beae9f90a33bf9eca68.png

    欢迎关注我的微信公众号【前端自习课】

    展开全文
  • 个API结果比较的工具,比较的内容就是Json内容,但是为了实现宽泛的内容相等即只需要字段和值相等即可,不需要字符串严格相等,这种情况下就需要将Json内容字符串转换成具体的对象,出于通用性方面的考虑希望这个...
  • c#用JObject解析Json

    2020-02-22 10:54:48
    2、添加相应库到项目中。参考:vs2013中c#引用第三方库 3、添加引用:using Newtonsoft.Json.Linq;...(1)遍历Json对象 JObject_jObject=JObject.Parse("{'ID':'001','Name':'test','Mark':'HelloWor...
  • 最近用到在C#遍历json对象key,并取其值的情况,方法如下  //在此处拼接物料跟踪的查询条件  string strWhere = "";  //这里Para就是前台传递的json数据  dynamic search = Para;  foreach (va
  • 1.1、文件及目录的创建、删除、copy、移动等操作 //文件目录 DirectoryInfo TheFolder = new DirectoryInfo("c:\\Test"); //判断目录是否存在 ...//遍历当前文件夹中的子目录 foreach(Direct...
  • 之前想了一下,有可能有几种原因造成这种情况。 访问权限不够,如:Private、...实体转换成Json字符串或者字典类型,或者自定义拥有其属性的对象,再访问(未测) 转成子类的对象,做个向下转型。(成功) ...
  • 后来调整思路,对对象的所有字段操作还是序列化后的Json比较方便,于是使用JToken去完成了这个工作。自己觉得这种思路是应该记录下来的,因而发布本。代码如下,(个人水平不高,欢迎提出改进意见) 【需要引用...
  • 2 json的方法3 JSON格式的遍历 1 什么是json格式? JSON(JavaScript Object Notation) JavaScript对象表示法是一种轻量级的数据交换格式。它是基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是...
  • c#实现ajax通信:向后台发送JSON字符串,接收响应字符串,并转换为对象 c#文件夹常用操作,属性设置,遍历、压缩 c#获取网页源代码的5种方式 c#执行cmd命令并获取返回结果字符串 C#数据流:文件...
  • 总述: 现在的发展趋势是,JS越来越面向对象化。而JS本身并未像Java,C#等... 这是在js面向对象编程中十分常用的一种方式,each方法使dom结构循环变得简洁,它可以遍历数组,对象json等 $(selector).each
  • 动态的将字符串转换为指定的类型

    千次阅读 2013-03-18 10:32:38
    比如说,在分解Json字符串转为C#对象的各个属性的时候,其中部分操作是这样的,会先将Json字符串分解成多个键值对字符串,然后对这个键值对字符串数组进行遍历,期间对于每个键值对字符串分为key和value两个字符串,...
  • 属性名转小驼峰

    千次阅读 2018-04-29 13:42:55
    js、android、ios属性命名习惯是小驼峰的(如:person.name),后端语言...此时可以跟后端人员协商解决,或前端人员自行处理: 使用递归遍历对象(或数组)的所有属性,将其属性名替换成小写,以下是js示例代码:func...
  • 查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合...
  • jQuery权威指南-源代码

    2013-11-11 14:36:34
    此外,他还是微软技术方面的专家,精通C#、ASP.NET 和SQL Server等技术,出版相关著作多部。 媒体推荐: jQuery的发展之迅速和取得的成功之巨大是其他所有开发框架都难以企及的,它已经成为Web开发者必备的核心...
  • ExtAspNet_v2.3.2_dll

    2010-09-29 14:37:08
    注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: http://extaspnet.codeplex.com/ 博客: http://sanshi.cnblogs.com/ 邮箱: sanshi.ustc@gmail...
  • 注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: http://extaspnet.codeplex.com/ 博客: http://sanshi.cnblogs.com/ 邮箱: sanshi.ustc@gmail...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

c#遍历json对象

c# 订阅