.net2.0使用json的知识,要点,问题和解决方案

本文介绍了JSON数据结构的基本概念,包括名称/值对的集合及值的有序列表,并通过JavaScript示例展示了简单和复杂的JSON结构。此外,还提供了.NET平台下处理JSON数据的方法,包括将DataTable转换为JSON字符串的技术。

一:定义

1. "名称/值"对的集合(名称为字符串类型,值可以是字符串,整数,对象等任意类型)

2. 值的有序列表(array)

二:实例,javascript中的json

1)简单的json

var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
alert(User.Name);
2)值的有序列表(array)
 var userAry= [
{"subject":"New Draft","senddate":"2008-11-12 17:44","id":"3337","from":"liuyan1@chinahr.com"},
{"subject":"New Draft","senddate":"2008-11-12 17:44","id":"3336","from":"liuyan1@chinahr.com"},
{"subject":"New Draft","senddate":"2008-11-12 17:44","id":"3335","from":"liuyan1@chinahr.com"}
]
alert(userAry.length);
alert(userAry[0].id);
alert(userAry[0]["id"]);
3)复杂的json
var tt={
"length":{"length":3},
"a":{"subject":"New Draft","senddate":"2008-11-12 17:44","id":3337,"from":"liuyan1@chinahr.com"},
"1":{"subject":"New Draft","senddate":"2008-11-12 17:44","id":3336,"from":"liuyan1@chinahr.com"},
"2":{"subject":"New Draft","senddate":"2008-11-12 17:44","id":3335,"from":liuyan1@chinahr.com}
}

alert(tt.length.length);
alert(tt["a"].id);
alert(tt[1].id)

///

对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。字符串和数字的定义和C或Java基本一致。


输出的JSON字符串里如果有引号,单引号和反斜杠前面加反斜杠“\”如:
string s="a\\\"b\\\"c d";
Response.Write("{\"text\":\""+s+"\"}" );

.net2.0使用Json调用
using System.Runtime.Serialization.Json;

DataTable转化成json字符串,去除单引号双引号的问题

   private DataTable getDataTable(string name)
        {
            DataTable dt = new DataTable(name);
            dt.Columns.Add(new DataColumn("name", typeof(string)));
            dt.Columns.Add(new DataColumn("password", typeof(string)));
            DataRow dr;
            for (int i = 0; i < 3; i++)
            {
                dr = dt.NewRow();
                dr[0] = i.ToString();
                dr[1] = "P" + i.ToString();
                dt.Rows.Add(dr);
            }
            string ss = "dddd' ddddd";
            dr = dt.NewRow();
            dr[0] = ss;
            dr[1] = "hh";
            dt.Rows.Add(dr);


            return dt;

        }

        private string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();

            jsonBuilder.Append("[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (i != 0) { jsonBuilder.Append(","); }
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\'");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\':\'");
                    jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\"","").Replace("\'",""));
                    jsonBuilder.Append("\',");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("}");
            }
            jsonBuilder.Append("]");

            return jsonBuilder.ToString();
        }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值