数据库表:
      
     Users表: UserId  userName
                  1      aaa
                  2      bbb
                  3      ccc 
                  4      ddd
     Messages表: messageId  Send  accept   MsgText      msgDate
                     1        1       2       dasd      dateTime.Now   
                     2        1       2       dasda     dateTime.Now 
                     3        3       2       fdfew     dateTime.Now 
                     4        4       2       sdadda    dateTime.Now 
                     5        3       2       jkhkjj    dateTime.Now        如果以用户2登录,查看他的消息。
        能以鞋面这种JSON格式输出吗? 
 
     
            {"message":["UserId":"1","msgList":[{"msgText":"dasd","msgDate":"dateTime.Now"},"msgText":"dasda","msgDate":"dateTime.Now"]] }
      {"message":["UserId":"3","msgList":[{"msgText":"fdfew","msgDate":"dateTime.Now"},"msgText":"jkhkjj","msgDate":"dateTime.Now"]] }
        {"message":["UserId":"4","msgList":[{"msgText":"sdadda","msgDate":"dateTime.Now"}]] }     如果可以,该怎么转换,怎么查询?      ...

解决方案 »

  1.   

    把dataset转换成 json,你可以网上找找方法 ,或者直接自己写,字符串拼接一下就可以了
      

  2.   

      #region dataTable转换成Json格式
        /// <summary>      
        /// dataTable转换成Json格式      
        /// </summary>      
        /// <param name="dt"></param>      
        /// <returns></returns>      
        public static string ToJson(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{\"");
            jsonBuilder.Append(dt.TableName.ToString());
            jsonBuilder.Append("\":[");
            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();
        }    #endregion dataTable转换成Json格式    #region DataSet转换成Json格式
        /// <summary>      
        /// DataSet转换成Json格式      
        /// </summary>      
        /// <param name="ds">DataSet</param>      
        /// <returns></returns>      
        public static string ToJson(DataSet ds)
        {
            StringBuilder json = new StringBuilder();        foreach (DataTable dt in ds.Tables)
            {
                json.Append("{\"");
                json.Append(dt.TableName);
                json.Append("\":");
                json.Append(ToJson(dt));
                json.Append("}");
            }
            return json.ToString();
        }
        #endregion 
      

  3.   

    使用 Newtonsoft.Json 进行JSON序列化吧http://james.newtonking.com/pages/json-net.aspx
      

  4.   

    private static string XmlToJSON(XmlDocument xmlDoc)
            {
                StringBuilder sbJSON = new StringBuilder();
                sbJSON.Append("{ ");
                XmlToJSONnode(sbJSON, xmlDoc.DocumentElement, true);
                sbJSON.Append("}");
                return sbJSON.ToString();
            }        private static void XmlToJSONnode(StringBuilder sbJSON, XmlElement node, bool showNodeName)
            {
                if (showNodeName)
                    sbJSON.Append("\"" + SafeJSON(node.Name) + "\": ");
                sbJSON.Append("{");            SortedList childNodeNames = new SortedList();            if (node.Attributes != null)
                    foreach (XmlAttribute attr in node.Attributes)
                        StoreChildNode(childNodeNames, attr.Name, attr.InnerText);            foreach (XmlNode cnode in node.ChildNodes)
                {
                    if (cnode is XmlText)
                        StoreChildNode(childNodeNames, "value", cnode.InnerText);
                    else if (cnode is XmlElement)
                        StoreChildNode(childNodeNames, cnode.Name, cnode);
                }            foreach (string childname in childNodeNames.Keys)
                {
                    ArrayList alChild = (ArrayList)childNodeNames[childname];
                    if (alChild.Count == 1)
                        OutputNode(childname, alChild[0], sbJSON, true);
                    else
                    {
                        sbJSON.Append(" \"" + SafeJSON(childname) + "\": [ ");
                        foreach (object Child in alChild)
                            OutputNode(childname, Child, sbJSON, false);
                        sbJSON.Remove(sbJSON.Length - 2, 2);
                        sbJSON.Append(" ], ");
                    }
                }
                sbJSON.Remove(sbJSON.Length - 2, 2);
                sbJSON.Append(" }");
            }        private static void StoreChildNode(SortedList childNodeNames, string nodeName, object nodeValue)
            {            if (nodeValue is XmlElement)
                {
                    XmlNode cnode = (XmlNode)nodeValue;
                    if (cnode.Attributes.Count == 0)
                    {
                        XmlNodeList children = cnode.ChildNodes;
                        if (children.Count == 0)
                            nodeValue = null;
                        else if (children.Count == 1 && (children[0] is XmlText))
                            nodeValue = ((XmlText)(children[0])).InnerText;
                    }
                }            object oValuesAL = childNodeNames[nodeName];
                ArrayList ValuesAL;
                if (oValuesAL == null)
                {
                    ValuesAL = new ArrayList();
                    childNodeNames[nodeName] = ValuesAL;
                }
                else
                    ValuesAL = (ArrayList)oValuesAL;
                ValuesAL.Add(nodeValue);
            }        private static void OutputNode(string childname, object alChild, StringBuilder sbJSON, bool showNodeName)
            {
                if (alChild == null)
                {
                    if (showNodeName)
                        sbJSON.Append("\"" + SafeJSON(childname) + "\": ");
                    sbJSON.Append("null");
                }
                else if (alChild is string)
                {
                    if (showNodeName)
                        sbJSON.Append("\"" + SafeJSON(childname) + "\": ");
                    string sChild = (string)alChild;
                    sChild = sChild.Trim();
                    sbJSON.Append("\"" + SafeJSON(sChild) + "\"");
                }
                else
                    XmlToJSONnode(sbJSON, (XmlElement)alChild, showNodeName);
                sbJSON.Append(", ");
            }        private static string SafeJSON(string sIn)
            {
                StringBuilder sbOut = new StringBuilder(sIn.Length);
                foreach (char ch in sIn)
                {
                    if (Char.IsControl(ch) || ch == '\'')
                    {
                        int ich = (int)ch;
                        sbOut.Append(@"\u" + ich.ToString("x4"));
                        continue;
                    }
                    else if (ch == '\"' || ch == '\\' || ch == '/')
                    {
                        sbOut.Append('\\');
                    }
                    sbOut.Append(ch);
                }
                return sbOut.ToString();
            }我这有个XML的,你可以借鉴下!!