簡體   English   中英

無法解析返回的Jquery / .NET Core JSON

[英]Jquery/.NET Core JSON returned cannot be parsed

這是我發送給控制器的內容:

“ [{\\” PropertyName \\“:\\” fewfewf \\“,\\” Key \\“:\\” ewgwewe \\“,\\” PrimaryValue \\“:\\” \\“,\\” SecondaryValue \\“:\\” \\“,\\ “ TertiaryValue \\”:\\“ \\”,\\“ MinimumValue \\”:\\“ \\”,\\“ MaximumValue \\”:\\“ \\”},{\\“ PropertyName \\”:\\\\“ rwhjyjut \\”,\\“ Key \\ “:\\” jtyjyt \\“,\\” PrimaryValue \\“:\\” \\“,\\” SecondaryValue \\“:\\” \\“,\\” TertiaryValue \\“:\\” \\“,\\” MinimumValue \\“:\\” \\ “,\\” MaximumValue \\“:\\” \\“}]”

這是我解析並再次對其進行序列化后從服務器收到的信息。

在此處輸入圖片說明 我很困惑,因為我什么都沒改變。 當我嘗試將其解析為Jquery時,出現此錯誤:

未捕獲到的SyntaxError:意外的令牌和位置2中的JSON

這是jQuery代碼

if ("@Model.FormPropertiesList".length !== 0) {
    console.log($.parseJSON("@Model.FormPropertiesList"));
}

我想念什么嗎?

編輯:這是我的服務器端代碼

var list = JsonConvert.DeserializeObject<List<NewFormPropertyViewModel>>(Input.FormPropertiesList);
Input.FormPropertiesList = JsonConvert.SerializeObject(list);
return View("Create", Input);

這就是我將字符串轉換為JSON的方式

$("#@Html.IdFor(m => m.FormPropertiesList)").val(JSON.stringify(dataSet));

首先替換您的“”

 var serverrep= "[{&quot;PropertyName&quot;:&quot;fewfewf&quot;,&quot;Key&quot;:&quot;ewgwewe&quot;,&quot;PrimaryValue&quot;:&quot;&quot;,&quot;SecondaryValue&quot;:&quot;&quot;,&quot;TertiaryValue&quot;:&quot;&quot;,&quot;MinimumValue&quot;:&quot;&quot;,&quot;MaximumValue&quot;:&quot;&quot;}]" var serverRepWithoutQuots=serverrep.replace(/&quot;/g, '"'); console.log(serverRepWithoutQuots) console.log(JSON.parse(serverRepWithoutQuots)) 

將JSON傳遞到模板然后傳遞給Django中的js文件時,出現了這樣的問題。 在Django中執行此操作時,您將從上下文視圖中傳遞某些內容,然后在Django模板中執行以下操作

var someName = {{ fromView }};

我把它用雙引號引起來

var someName = "{{ fromView }}";

因此它在轉義的JSON中轉義了雙引號。 我花了大約2個小時的時間來弄清楚到底是什么原因,而我實際上只是將雙引號更改為單引號,因為它是將其讀取為帶雙引號的字符串,並且在其中包含另一個帶有雙引號的字符串(json字符串)

var someName = '{{ fromView }}';

關鍵是我將檢查JSON以確保您沒有以錯誤的方式傳遞它,並且編碼不正確/在某處添加了額外的引號

該字符串已被HTML編碼。 您可以使用@HTML.Raw告訴razor將string原樣放置。 字符串被編碼的原因之一是出於安全目的。 假設您正在嘗試顯示剛從數據庫中獲取的某些數據,並且該數據具有一些“惡意” JavaScript,盡管此代碼對數據庫無害,但是一旦呈現視圖,它將影響客戶端。 你可以試試:

if ("@Model.FormPropertiesList".length !== 0) {
    console.log(JSON.parse("@HTML.Raw(Model.FormPropertiesList)"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM