数据库表:
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"}]] } 如果可以,该怎么转换,怎么查询? ...
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"}]] } 如果可以,该怎么转换,怎么查询? ...
/// <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
{
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的,你可以借鉴下!!