我有以下的C#方法:如何从JSON字符串解析数组?
[HttpPost]
public JsonResult GetDateBasedRegex(string date)
{
string[] arr = CommonMethods.GetDateBasedRegex(date);
JsonResult retVal = Json(JsonConvert.SerializeObject(retVal));
return retVal;
}
arr
包含以下内容:
而且包含此值:
,C#语言方法被调用由此JS:
var date = $('#myDateField').val();
AjaxRequest(date, 'html', 'post', '/Common/GetDateBasedRegex', 'application/json;', function (response)
{
var result = JSON.parse(response);
}
);
我设置一个断点,并增加了监视两个response
和result
:
response
稍微更长,因为它避开了引号,但否则它们是相同的值。
这两个变量都是单个字符串。我该如何解析这个值到数组中?当我输入这个问题时,我看到了各种“建议性问题”, 最相关的一个似乎是这样的:Javascript how to parse JSON array但我已经在做所选答案的建议。
我试着制作一个JS小提琴:http://jsfiddle.net/zc2o6v52/但由于调试器添加了引号,我不得不稍微调整一下这些值以使其正常工作。如果我使用变量csharpJsonSerializedString
或result
该循环有效,但是当我使用response
时,控制台中出现“Uncaught SyntaxError:Unexpected string”错误。
我在做什么错?你如何从JSON字符串解析数组?
EDIT
C#retval
的值:
"[\"^[0-9]{9}[A-Z0-9]{0,3}$\",\"^[A-Z]{1,3}([0-9]{6}|[0-9]{9})$\"]"
JS response
的值:
""[\"^[0-9]{9}[A-Z0-9]{0,3}$\",\"^[A-Z]{1,3}([0-9]{6}|[0-9]{9})$\"]""
JS result
的值:
"["^[0-9]{9}[A-Z0-9]{0,3}$","^[A-Z]{1,3}([0-9]{6}|[0-9]{9})$"]"
通过右键单击 - >复制值来抓住所有这些,因此它们包含引号的“包装”集合以使其成为字符串。
C#看起来像它是如何形成的,如何定义一个JS数组。看起来response
包含了一组额外的引号,尽管?
我也尝试改变我的JS来定义var result = ['',''];
以外的ajax调用,然后用JSON.parse()
更新它的值,但它仍然是一个单一的字符串后。
你可以发布确切的json你发送文本而不是图像?在你的jsfiddle结果是两个字符串用逗号分隔,并且你试图将它分配给一个字符串变量 – petul
@petul完成,抱歉。 – sab669
您可以使用邮递员,并打你的API端点,并复制身体 - >原始值?或在铬网络选项卡的原始响应正文?到目前为止,它似乎不是有效的RFC 4627 JSON – petul