zoukankan      html  css  js  c++  java
  • JSON数据格式集合分析(转)

    原文地址:http://www.php100.com/html/webkaifa/javascript/2013/0125/11993.html

    JSON是一种轻量级的数据交换格式。它是基于javascript语法标准的一个子集。JSON是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,...
     

       

     

    JSON 是一种轻量级的数据交换格式。它是基于javascript语法标准的一个子集。JSON是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本 格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

    要想熟练的操作json数据,就要先了解json数据:
     
    JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
     
    规则如下:
    1、映射用冒号(“:)表示。名称:值
     
    2、并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
     
    3、映射的集合(对象)用大括号(“{}”)表示。
    {
    名称1:值1,
    名称2:值2
    }
     
    4、并列数据的集合(数组)用方括号(“[]”)表示。
    [
    {名称1:值,名称2:值2},
    {名称1:值,名称2:值2}
    ]
     
    5、元素值可具有的类型:string,number, object, array, true, false, null
    注意:1、JSON 用冒号(而不是等号)来赋值。每一条赋值语句用逗号分开。整个对象用大括号封装起来。可用大括号分级嵌套数据。
                 2、对象描述中存储的数据可以是字符串,数字或者布尔值。对象描述也可存储函数,那就是对象的方法。
     
    6、JSON主要有两种数据结构
    (1)由key–value对组成的数据结构。这种数据结构在不同的语言中有不同的实现.
    例如:在javascript中是一个对象.而在java中是一种Map结构,c语言中是struct,其它的语言中可能为record、 hash table 等。
    (2)有序集合、这种数据结构在不同语言中可能有list、vertor、数组和序列等实现。
     
    7、C#中json数据格式的处理
     
    List<T>转Json
    [csharp] 
     
     public static string Obj2Json<T>(T data)  
    {  
        try  
        {  
            System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());  
            using (MemoryStream ms = new MemoryStream())  
            {  
                serializer.WriteObject(ms, data);  
                return Encoding.UTF8.GetString(ms.ToArray());  
            }  
        }  
        catch  
        {  
            return null;  
        }  
    }  

     Json转List<T>

     public static Object Json2Obj(String json,Type t)  
    {  
        try  
        {  
            System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t);  
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))  
            {  
                  
                return  serializer.ReadObject(ms);  
            }  
        }  
        catch  
        {  
            return null;  
        }  
    }  
     DataTable 转Json
     
     
     public static string DataTable2Json(DataTable dt)  
    {  
        if (dt.Rows.Count == 0)  
        {  
            return "";  
        }  
       
        StringBuilder jsonBuilder = new StringBuilder();  
        // jsonBuilder.Append("{");   
        //jsonBuilder.Append(dt.TableName.ToString());    
        jsonBuilder.Append("[");//转换成多个model的形式  
        for (int i = 0; i < dt.Rows.Count; i++)  
        {  
            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());  
                jsonBuilder.Append("\",");  
            }  
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
            jsonBuilder.Append("},");  
        }  
        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
        jsonBuilder.Append("]");  
        //  jsonBuilder.Append("}");  
        return jsonBuilder.ToString();  
    }  

     单个对象转JSON

     public static T Json2Obj<T>(string json)   
    {  
        T obj = Activator.CreateInstance<T>();  
        using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))  
        {  
            System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());  
            return (T)serializer.ReadObject(ms);  
        }  
    }  
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Java开发中的23种设计模式详解(转)
    主表和从表
    MyBatis开发中解决返回字段不全的问题
    个人常用配置文件解析
    SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题
    mybatis之sql执行有数据但返回结果为null
    Hadoop window win10 基础环境搭建(2.8.1)
    什么水平算精通C++ Builder?
    Delphi中取得汉字的首字母(十分巧妙)
    全部的Windows消息对应值
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/2879103.html
Copyright © 2011-2022 走看看