Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getParams破坏JSON_Javascript_Json - Fatal编程技术网

Javascript getParams破坏JSON

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

我有一个包含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 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的开头添加了一个随机的%。