• 关于json的知识整理


    一、什么是json

      JSON:JavaScript 对象表示法(JavaScript Object Notation)。

      JSON 是存储和交换文本信息的语法。类似 XML,但JSON 比 XML 更小、更快,更易解析。

      JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

    二、json语法规则

    • 数据在名称/值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

        json名/值对:

       

    “name”:"张三"

       json对象(对象可以包含多个名称/值对

    {"name":"张三","sex":""}

       json数组(数组可以包含多个对象)

       

    {
    "people": [
    { "name":"John" , "sex":"man" },
    { "name":"Anna" , "sex":"women" },
    { "name":"Peter" , "sex":"man" }
    ]
    }

    三、eval() 函数

      JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

      

    var obj = eval ("(" + txt + ")");

     注意:必须把文本包围在括号中,这样才能避免语法错误。

    四、具体示例

      (1)后台拼接json

      

       string xm = context.Request.QueryString["xm"].ToString();
       string rqStr = "select id,rq,xq,sj from b_gh_zj where xm='" + xm + "' and thimg='开通' and rq>GETDATE() and xhsl>ghsl";
       DataTable dt=DBUtility.SqlHelper.Query(rqStr).Tables[0];
       StringBuilder sbJson = new StringBuilder();
       string strjson = "";
       sbJson.Append("[");
       if (dt.Rows.Count>0)
       {
            foreach (DataRow dr in dt.Rows)
            {
              sbJson.Append("{id:" + dr["id"] + ",rq:'" + Convert.ToDateTime(dr["rq"]).ToString("yyyy-MM-dd") + "',xq:'" + dr["xq"] + "',sj:'" + dr["sj"] + "'},");
            }
            strjson = sbJson.ToString();
            strjson = strjson.Substring(0, strjson.Length - 1) + "]";//去掉最后一个逗号;
            context.Response.Write(strjson);
        }

     (2)前台解析json

      

    var myobj = eval(res); //获取json对象
                           
    document.getElementById("ddlTime").options.length = 0; //每一次先把之前的清空
    document.getElementById("txtyyxq").value = ""; 

    for (var i = 0; i < myobj.length; i++) {
    document.getElementById(
    "ddlTime").options.add(new Option(myobj[i].rq + "--" + myobj[i].sj, myobj[i].id));
    }
    //js动态为下拉框添加值 (text,value)

    (3)后台解析json

      读取到的json字符串(jsonArray)如下:

     [{"id":"100","da":"67"},{"id":"101","da":"服务态度恶劣。"},{"id":"98","da":"63"},{"id":"99","da":"64"}]

     解析代码如下:

    [Serializable]
    class User
    {
        public int id{get;set;}
        public string da { get; set; }
    }
    JavaScriptSerializer json = new JavaScriptSerializer();
    List<User> list = json.Deserialize<List<User>>(jsonArray);
    if (list != null && list.Count > 0) { foreach (var item in list) {
         Response.Write(item.id+"------"+item.da);

      }
    }

       

      

  • 相关阅读:
    我的Ajax之旅(一):不能加载'AjaxControlToolkit'。。。拒绝访问
    网络编程(一):用C#下载网络文件的2种方法
    Locks
    Threads
    C语言中函数名和struct名可以重名!
    使用#include <pthread.h>
    APUE Chapter 7 (2)main函数的参数
    Creating a shared and static library with the gnu compiler [gcc][转]
    Signals
    APUE Chapter 7(3) – Memory layout of a C program
  • 原文地址:https://www.cnblogs.com/janneystory/p/3555615.html
Copyright © 2020-2023  润新知