Javascript(Ajax)解析JSON值

时间:2017-10-27 08:17:16

标签: javascript jquery json ajax

这里总javascript noob。只是试图理解语言。

我正在使用以下代码请求JSON请求:

function request(){
$.ajax({
        dataType: "jsonp",
        type: 'GET',
url: "getWebsite",
        success: function(result){
            data = result;
            $('.data').text(data);
            console.log(data);
    }});

get请求返回如下内容:

"items": [ 
 {
  "topLevelComment": {
    "authorDisplayName": "a"
    "textDisplay": "b"
 },
 {
  "topLevelComment": {
    "authorDisplayName": "c"
    "textDisplay": "d"
 }

我想循环通过AuthorDisplayName和textDisplay并随机选择一个。如果我不得不猜测,最好的方法就是将它们放入数组中。我不知道怎么回事。

4 个答案:

答案 0 :(得分:1)

var json={
	"items": [{
		"topLevelComment": {
			"authorDisplayName": "a",
			"textDisplay": "b"
		}
	}, {
		"topLevelComment": {
			"authorDisplayName": "c",
			"textDisplay": "d"
		}
	}, {
		"topLevelComment": {
			"authorDisplayName": "e",
			"textDisplay": "f"
		}
	}, {
		"topLevelComment": {
			"authorDisplayName": "g",
			"textDisplay": "h"
		}
	}]
};
$("input:button").on("click",function(){
 selectRand = Math.floor((Math.random() * json.items.length))
 var r=json.items[selectRand].topLevelComment.textDisplay;
 console.log(r);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" value="selectRand"/>

答案 1 :(得分:0)

items已经是一个数组。所以你要做到以下几点:

  1. 将结果解析为json(仅当返回字符串时)

    items = JSON.parse(items)

  2. 获取随机索引

    let index = Math.floor((Math.random() * items.length))

  3. 获取随机数据

    let authorDisplayName = items[index].topLevelComment.authorDisplayName
    let textDisplay = items[index].topLevelComment.textDisplay

答案 2 :(得分:0)

据我所知,你试图从items数组中显示一个随机对象?

items变量已经是一个数组,所以你不需要创建一个。要获取数组的随机元素,可以使用以下代码:

var item = result.items[Math.floor(Math.random()*items.length)];

我不确定items数组的确切位置,让我们说它是结果的根。您可能还需要通过方法JSON.parse()运行数组,使其成为有效的JavaScript对象。

然后要获取文本和显示名称,您可以执行此操作:

var authour = item.topLevelComment.authorDisplayName; var text = item.topLevelComment.textDisplay;

答案 3 :(得分:0)

如果您的数据已经是对象格式,并且您只想从随机选择中获取数据。然后,您不必循环访问所有数据。只需从总数据中随机选择一个索引。

function request(){
    $.ajax({
        dataType: "jsonp",
        type: 'GET',
        url: "getWebsite",
        success: function(result){
            data = result;
            $('.data').text(data);
            console.log(data);

            var randomIndex = Math.floor((Math.random() * data.items.length));
            console.log("Selected data authorDisplayName: " + data.items[randomIndex].topLevelComment.authorDisplayName);
            console.log("Selected data textDisplay: " + data.items[randomIndex].topLevelComment.textDisplay);
        }
    });
}