Javascript getParams破坏JSON
我有一个包含JSON的URL 这是URL:Javascript getParams破坏JSON,javascript,json,Javascript,Json,我有一个包含JSON的URL 这是URL: http://localhost:1234/asset/view-details.action?id=5&assetJson=%%7B%0A%20%20%22assetDesc%22%3A%20%22AMERICAN%20HARDWARE%20%26%20TOOLS%22%0A%7D 可以通过以下方式检索JSON文件: const assetJson = getParams.get('assetJson'); const assetDetai
http://localhost:1234/asset/view-details.action?id=5&assetJson=%%7B%0A%20%20%22assetDesc%22%3A%20%22AMERICAN%20HARDWARE%20%26%20TOOLS%22%0A%7D
可以通过以下方式检索JSON文件:
const assetJson = getParams.get('assetJson');
const assetDetail = JSON.parse(assetJson);
资产明细应等于:
{
"assetDesc": "AMERICAN HARDWARE & TOOLS"
}
在JavaScript中,每次尝试getParams.get('assetJson')时,都会出现以下错误“JSON输入的意外结束”。这是因为返回值在与符号(&)处被截断。我的结局是:
{
"assetDesc": "AMERICAN HARDWARE
&工具“}被完全切断
有没有办法解决这个问题?我非常感谢您提供的帮助。您可以始终使用
URLSearchParams
,它是get
函数以及JSON.parse
我正在使用的子字符串(1)
的存在是为了消除在JSON开始{
之前出现的%符号
var str=”http://localhost:1234/asset/view-详细信息。操作?id=5&assetJson=%%7B%0A%20%20%22assetDesc%22%3A%20%22AMERICAN%20%20HARDWARE%20%26%20TOOLS%22%0A%7D”;
const urlParams=新的URLSearchParams(str);
myParam=urlParams.get('assetJson')。子字符串(1);
myParam=JSON.parse(myParam)
console.log(myParam.assetDesc)
我就是这样解决的
const parseResult = new DOMParser().parseFromString(window.location.search, 'text/html');
// replace "&" with it's URL encoding
const parsed = parseResult.documentElement.textContent.replace('%20&', '%20%26');
const urlParams = new URLSearchParams(parsed);
const assetJson = urlParams.get('assetJson');
const assetDetail = JSON.parse(assetJson);
JSON字符串的URL编码不正确。如果是JSON对象,为什么不使用类似于:
console.log(assetJson.assetDesc)的内容
?无论谁将此JSON放入URL中,都应该正确地严格执行并对其进行URL编码。这里的内容确实不足以提供更具体的帮助。这是根本问题:我有一个URL,其中包含JSON,使用assetJson=。
您不应该在URL中使用JSON。只需添加。子字符串(1)即可解决此问题
到获取
中,并且不使用所有其他内容。问题是json的开头添加了一个随机的%。