Json 有两种形式,一种是对象类型(使用冒号分隔字段名和数据) 一种是数组类型,即只是使用中括号 引号 逗号定义的Javascript数组
请问,我怎么样才能生成Json的数组形式另外,如果遇到了特殊字符串,需要如何替换,.net 的串化过程是否会自动替换.哪些字符需要特殊注意?

解决方案 »

  1.   

    如果把类放到arraylist中 通过Aarraylist.add(value) 会获得Json数组,可是这么做会有重复的装箱拆箱.怎么样可以避免?
      

  2.   

    这种?var user =  
              [ 
                  { 
                    "Id":1, 
                    "Name":"Hubery", 
                    "Age":23, 
                    "Address": 
                      [ 
                        {"City":"Beijing","ZipCode":"111111"}, 
                        {"City":"xxxx","ZipCode":"222222"} 
                      ], 
                    "Email":"[email protected]
                  }, 
                  { 
                    "Id":2, 
                    "Name":"Chris", 
                    "Age":24, 
                    "Address":{"City":"Beijing","ZipCode":"100085"}, 
                    "Email":"[email protected]
                  } 
              ] 
      

  3.   

    那叫json吗?你倒是可以把数组搞为字符串,然后处理
      

  4.   

    [3,3,4,"23423","23232"] 
    这个如果在javascript里,应该称为数组!
      

  5.   

    Json 有两种形式 一种是对象数组 一种是数组,我要的是只生成数组,而不是对象数组
      

  6.   

    [3,3,4,"23423","23232"] 
    我这种也叫Json 不过是简单类型的.而且传输的时候 比常规那种少一半传输量.只需要在客户端切割就行了.
      

  7.   

                StringBuilder retVal = new StringBuilder();
                string v = JsonValue.ToString();            for (int i = 0; i < v.Length; i++)
                {
                    switch (v[i])
                    {
                        case '\r':
                            retVal.Append("\\r");
                            break;
                        case '\n':
                            retVal.Append("\\n");
                            break;
                        case '\"':
                            retVal.Append("\\\"");
                            break;
                        default:
                            retVal.Append(v[i]);
                            break;
                    }
                }            return retVal.ToString();
      

  8.   

    楼上的,用的JsonValue 好像是在System.Json 空间下 而.net 2.0 和.net 3.5都没有这个空间.你是怎么用的.麻烦你说清楚一些.多谢
      

  9.   

    而且你那个好像不能获得 Json的数组形式
      

  10.   


                string[] a = { "3", "3", "4", "23423", "23232" };
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                string j= serializer.Serialize(a);
                Response.Write(j);.net3.5
    using System.Web.Script.Serialization;
      

  11.   

    楼上的,你是把数组成数组,我是想把对象生成数组一般来说,Json都是把对象生成对象数组,而我只想要单纯的数组,另外最好是.net 2.0 下
      

  12.   

    楼主所说的数组其实就是JSON形式的数组,标准的js数组貌似是这样的:
    var arr=new Array(1,2,4,"无聊");由于JSON是js的一部分,所以字符串的转义是一样的:
    var array=["c:\\a\\test1.txt","中国的\"神七\"有点像样"];
    如果写成
    ["c:\a\test1.txt","中国的"神七"有点像样"]
    无论是.net还是js都会异常
      

  13.   


     Information info = new Information();
            info.InfoId = 33;
            info.InfoTitle = "aaa";
            info.Publisher = "dsd";        StringBuilder sb = new StringBuilder();
          
            sb.Append("[");
            sb.Append(info.InfoId  + ",");
            sb.Append("\"" + info.InfoTitle + "\"" + ",");
            sb.Append("\"" + info.Publisher + "\"" );
            sb.Append("]");        Response.Write(sb);
      

  14.   

    BernardSun 兄弟,你的办法也是拼字符串啊.有没有更简单的办法?拼起来实在很麻烦,追求序列的号,得每个类自己写,用反射的话,又太慢.除非 缓存加反射
      

  15.   


    public static string GetJSON(OleDbDataReader drValue, string strTableName)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("{");
            sb.Append("\"").Append(strTableName).Append("\":");
            sb.Append(" [");
            try
            {
                while (drValue.Read())
                {
                    sb.Append("{");
                    for (int i = 0; i < drValue.FieldCount; i++)
                    {
                        sb.Append("\"");
                        sb.Append(drValue.GetName(i).Trim());
                        sb.Append("\"");
                        sb.Append(":");
                        sb.Append("\"");
                        sb.Append(drValue.GetValue(i).ToString().Replace("\r", "<br/>").Replace("\"","&quot").Trim().Replace("\n",""));
                        sb.Append("\",");
                    }
                    sb.Remove(sb.ToString().LastIndexOf(','), 1);
                    sb.Append("},");
                }
                sb.Remove(sb.ToString().LastIndexOf(','), 1);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                drValue.Close();
            }
            sb.AppendLine(" ]");
            sb.AppendLine(" }");
            return sb.ToString();
        } 这是我常用的一个在服务端将表中取出的数据转为JSON格式的方法,很实用,直接调用GetJson方法就行
    GetJSON(OleDbDataReader drValue, string strTableName)
    drValue是传入的一个reader,注意要始终保持连接,strTableName是你返回到前台的表名
      

  16.   

    2楼正解,返回的是json数组 如果要解析,必须使用eval()函数转换一下。