如何组合 JSON 响应

问题描述 投票:0回答:1

所以我试图取回多个 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节点。

谢谢!

c# xml json
1个回答
2
投票

如果我看一下 JSON 格式,我会说您可以简单地使用

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) + "]";
© www.soinside.com 2019 - 2024. All rights reserved.