如何组合JSON响应

时间:2014-03-28 13:51:29

标签: c# xml json

所以我试图找回多个json响应,将它们全部合并为一个JSON字符串并将其传递给视图。然后我可以遍历单个响应并访问所有响应。

到目前为止,我无法让它发挥作用。我认为最简单的方法是将JSON字符串转换为xmlnodes,将xmlnodes添加到文档中,然后将文档转换回单个json字符串。

这是我的代码。

string json1 = GetXmlData();
string json2 = GetRestfulData();
XmlDocument doc = new XmlDocument();
XmlNode root = doc.CreateElement("root");
XmlDocument string1 = (XmlDocument)JsonConvert.DeserializeXmlNode("{\"str1\":" + json1 + "}", "str1");
XmlNode node1 = doc.ImportNode(string1.FirstChild, true);
XmlDocument string2 = (XmlDocument)JsonConvert.DeserializeXmlNode("{\"str2\":" + json2 + "}", "str2");
XmlNode node2 = doc.ImportNode(string2.FirstChild, true);
doc.AppendChild(node1);
doc.AppendChild(node2);
string response = JsonConvert.SerializeXmlNode(doc);
return response;

但到目前为止,我所尝试的所有内容都会导致错误。有更好的方法来完成这项工作或完成上述工作吗?

上面给出的错误是" doc"在尝试添加node2时已经有一个documentElement节点。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我看一下JSON format,我会说你可以简单地使用String.Join所有JSON对象并在它们周围加上方括号。

var jsonObjects = new List<string>();
jsonObjects.Add("{ 'firstName':'John' , 'lastName':'Doe' }");
jsonObjects.Add("{ 'firstName':'Anna' , 'lastName':'Smith' }");
jsonObjects.Add("{ 'firstName':'Peter' , 'lastName':'Jones' }");

var jsonObjectsArray = "[" + String.Join(jsonObjects, ", ") + "]";