解析json数组到数组javascript

Parsing json array to array javascript

本文关键字:数组 javascript 解析 json      更新时间:2023-09-27

我有一个带有json数据的数组:

var jsonString=[
  {
    "url": "http://www.anurl.com",
    "tags": {
      "Event": 6,
      "Event1": 2
    }
  }
]

现在我想构建下一个结构:

var data= [ {"text":"Event", "weight" : "6", "link" :"www.anurl.com"} //etc ];

现在我查看了var array = $.parseJSON(JSON.stringify(jsonString));并在此基础上尝试用CCD_ 2构建数据数组;

但是我如何插入事件:6部分?我不能做array.tags[0]作为数组。标签会给我两个。

那么我该如何解决这个问题呢?

您在javascript中使用对象文字,您提供的示例是:

var jsonString=[{
    "url": "http://www.anurl.com",
    "tags": {
        "Event": 6,
        "Event1": 2
    }
}];

jsonString是一个数组,元素tags是一个对象而不是数组,所以您可以像这样访问它:

var event = jsonString[0].tags.Event;

您可以读取标签对象的属性,如下例所示:

function loadArray(urls){
	xhrDoc= new XMLHttpRequest();  
	if (xhrDoc.overrideMimeType)
    xhrDoc.overrideMimeType('text/plain; charset=x-user-defined');
	xhrDoc.onreadystatechange =function()
	{
		if (this.readyState == 4)
		{
		    if (this.status == 200)
		   {
		    var data= this.response; //Here is a string of the text data 
		    printUrls(data);
		   }
		}                   
	};
	xhrDoc.open('GET', urls , true);
	xhrDoc.send(); 
}
function printUrls(response) {
    var arr = JSON.parse(response);
    var i;
    var out = "";
    for(i = 0; i < arr.length; i++) {
    	console.log(arr[i].url);
    	console.log(arr[i].tags['Event']); // Read Event 
    	console.log(arr[i].tags['Event1']); //// Read Event1
    	out = "URL : "+ arr[i].url +  " Event : "+ arr[i].tags['Event']+ " Event1 : " +  arr[i].tags['Event1'] + "'n";
    }
    document.getElementById("id01").innerHTML = out;
}
<!DOCTYPE html>
<html>
<head>
	<script type="text/javascript" src="parseJsonFile.js"></script>
</head>
<body onload="loadArray('parseJson.json')">
<div id="id01"></div>
</body>
</html>

我用解决了它

这个代码

  var array =$.parseJSON(JSON.stringify(jsonString));
            for (var i = 0; i < array.length; i++) {
              var keys =array[i].tags;
              var tags = Object.keys(keys);
              for(var j = 0 ; j<tags.length; j++){
                var obj = {text : tags[j], weight : keys[tags[j]] , link : array[i].url};
                  Jarray.push(obj);
              }  

            }

数据由API提供,因此标签Event : 6可能是下一次Tomorrlowland : 3事件名称和权重由API给定。这就是为什么我不能使用jsonString[0].tags.Event,因为每次名称事件都会不同。

谢谢大家帮助我!