谢谢诶

解决方案 »

  1.   

    先转换成datatable
    public static DataTable Json2DataTable(string strJson)
        { 
            var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
            string strName = rg.Match(strJson).Value;
            DataTable tb = null; 
            strJson = strJson.Substring(strJson.IndexOf("[") + 1);
            strJson = strJson.Substring(0, strJson.IndexOf("]")); 
            rg = new Regex(@"(?<={)[^}]+(?=})");
            MatchCollection mc = rg.Matches(strJson);
            for (int i = 0; i < mc.Count; i++)
            {
                string strRow = mc[i].Value;
                string[] strRows = strRow.Split(',');
                if (tb == null)
                {
                    tb = new DataTable();
                    tb.TableName = strName;
                    foreach (string str in strRows)
                    {
                        var dc = new DataColumn();
                        string[] strCell = str.Split(':');
                        dc.ColumnName = strCell[0];
                        tb.Columns.Add(dc);
                    }
                    tb.AcceptChanges();
                }
                DataRow dr = tb.NewRow();
                for (int r = 0; r < strRows.Length; r++)
                {
                    dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
                }
                tb.Rows.Add(dr);
                tb.AcceptChanges();
            }
            return tb;
        }然后DataSet   ds   =   new   DataSet(); 
    DataTable   dt1   =   new   DataTable(); 
    ds.Tables.Add(dt1); 
    ds.WriteXml(你想生成的xml的地址);
      

  2.   

    要现有序列化类才好和json,xml互相转换。
    没有这个类,恐怕要手工转,而且json没有数组的名字,xml有,需要随机定义这2着并非完全等价啊。
      

  3.   

    这里有人用js实现了一个http://topic.csdn.net/u/20090209/10/48ff17a6-2f79-4cea-a9a4-7cf09d89d640.html
      

  4.   

    先把JSON反序列化成对象,再把对象序列化成XML
      

  5.   


    DataTable生成的xml难道不是太复杂、太垃圾么?!
    一个json对象就是一个Dictionary<string,jsonObject>,而jsonObject其实只有简单的这几种可能性:
      1. 数值。
      2. 字符串。
      3. json数组。
      4. 另外一个json对象。
      5. null。其实生成的xml是非常清爽的,例如使用 linq to xml 来生成。
      

  6.   


    反序列化时,如果一个属性是数组,那么属性名自然是有的,而json数组并不需要名字。
      

  7.   

    对于一个对象(或者对象数组),json并不为其命名。这其实一点也不影响反序列化,json反而可以适合作为一种赋值机制。例如你可以把A类型对象进行json,然后反序列成为一个B类型对象,尽管所谓的最终对象的类型名字变了,也不影响反序列化,更不需要“随机定义”。这方面当然json当然比xml强。