我有以下的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