簡體   English   中英

JSON解析 - 名稱中的單引號

[英]JSON parse - single quote inside name

在Django模板中,我打印出如下數據:

P.place = '{{place.json|safe}}';

然后在JavaScript文件中,我正在削減它:

place = JSON.parse(P.place);

這樣的數據一切都很好:

{"category": "Cars", "name": "Z"}

因為字符串看起來像這樣:

P.place = '{"category": "Cars", "name": "Z"}'

所以,我可以使用JSON.parse方法解析它,接受字符串作為輸入。

問題是我得到這樣的數據:

{"category": "Cars", "name": "Wojtek's Z"}

因為JSON解析器的輸入字符串看起來像這樣:

'{"category": "Cars", "name": "Wojtek'

我無法在JSON字符串中轉義單引號,因為那時JSON字符串變得無效。 出於同樣的原因,我無法用雙重替換周圍的引號,並在JSON字符串中轉義雙引號。

我的解決方案如下:

在HTML模板中:

P.place = {{place.json|safe}};

然后在JavaScript中

var place = JSON.stringify(P.place);
place = JSON.parse(place);

它有效,但它不是最佳解決方案恕我直言。

如何以更多的方式解決這個問題?

我可以想到兩種可能性:

創建一個application/json類型的腳本元素,將模板數據注入其中,然后讀取其數據,例如。

<script id="place-json" type="application/json">
  {{place.json|safe}}
</script>
<script type="application/javascript">
  P.place = $('#place-json').text();
</script>

或者,在注入字符串之前手動轉義單引號,例如。

simplejson.dumps(yourdata).replace("'", r"\'")

暫無
暫無

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

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