如何格式化 json 数组

how to format json Array

如何将二维数组转换为 json 数组并使用 ajax 发送到视图。

我用了return Json(JsonConvert.SerializeObject(symboltable2), JsonRequestBehavior.AllowGet);

将其转换为 json 和 return。问题是 json 字符串的开头和结尾包含双引号 "[["A","B"],["C","D"]]"。为了反序列化,我需要去掉双引号,在结尾和开头添加大括号。

但我需要将其转换为 json 数组,如 [["A","B"],["C","D"]] 任何想法如何做到这一点?

您可以使用 String.Trim 删除引号。

char[] charsToTrim = { '"' };
string json = Json(JsonConvert.SerializeObject(symboltable2), JsonRequestBehavior.AllowGet);
string result = json.Trim(charsToTrim);

你是说你想去掉引号和大括号(花括号)。使用 .Remove()

非常简单
string json = Json(JsonConvert.SerializeObject(symboltable2), JsonRequestBehavior.AllowGet);;
json = json.Remove(json.Substring(0, 1));
json = json.Remove(json.Substring(json.Length - 1, 1));
return json;

在我看来,您正在对数组进行双重序列化,这可以解释额外的引号。 Json.Net JsonConvert.SerializeObject() 方法和Json() MVC 方法都执行序列化。您应该只使用其中之一。

所以,要么删除对 JsonConvert.SerializeObject() 的调用,让 Json() 处理序列化...

return Json(symboltable2, JsonRequestBehavior.AllowGet);

或者,如果您更喜欢使用 Json.Net,则使用 Content() 方法而不是 Json() 方法来 return 结果:

return Content(JsonConvert.SerializeObject(symboltable2), "application/json");

如果您使用第二种方法,您还需要确保控制器方法的 return 类型是 ContentResultActionResult(相对于 JsonResult).