Javascript:在JSON中查找键及其值

时间:2017-02-27 17:54:13

标签: javascript json

我有一个以不同方式返回的JSON对象,但始终有key。我怎么能得到它?

E.g。

"Records": {
    "key": "112"
}

或者

"Records": { 
    "test": {
        "key": "512"
    }
}

甚至在数组中:

"Records": { 
    "test": {
        "test2": [
            {
                "key": "334"
            }
        ]
    }
}

尝试了几个选项,但仍然无法弄清楚(

5 个答案:

答案 0 :(得分:2)

我不会为你编写代码但是给你一个想法可能会有所帮助,首先使用

将JSON对象转换为字符串
JSON.stringify(obj);

之后使用indexOf()方法搜索Key。 提取以前的' {'和下一个'}'字符串并再次转换为JSON对象。 使用

var obj =  JSON.parse(string);

然后

 var value = obj.key

答案 1 :(得分:1)

我认为这个migth是解决方案(asuming key总是字符串,你不关心数据的res)

const data = [`"Records": { 
    "test": {
        "test2": [
            {
                "key": "334",
				"key": "3343"
            }
        ]
    }
}`, `"Records": { 
    "test": {
        "key": "512"
    }
}`, `"Records": {
    "key": "112"
}`]

const getKeys = data => {
  const keys = []
  const regex = /"key"\s*:\s*"(.*)"/g
  let temp
  while(temp = regex.exec(data)){
    keys.push(temp[1])
  }
  return keys
}

for(let json of data){
  console.log(getKeys(json))
}

答案 2 :(得分:0)

  

我怎么能得到它?

递归! e.g。

function getKey(rec) {
    if (rec.key) return rec.key;

    return getKey(rec[Object.keys(rec)[0]]);
}

https://jsfiddle.net/su42h2et/

答案 3 :(得分:0)

您可以使用迭代和递归方法获取其中包含SELECT 1的对象。

key

答案 4 :(得分:0)

你可以试试这个

const data = {
	"Records": {
		"key": "112"
	}
};

const data2 = {
	"Records": {
		"test": { "key": "512" }
	}
};

const data3 = {
	"Records": {
		"test": {
			"test2": [
				{ "key": "334" },
			]
		}
	}
};

function searchKey(obj, key = 'key') {
	return Object.keys(obj).reduce((finalObj, objKey) => {
		if (objKey !== key) {
			return searchKey(obj[objKey]);
		} else {
			return finalObj = obj[objKey];
		}

	}, [])
}

const result = searchKey(data);
const result2 = searchKey(data2);
const result3 = searchKey(data3);
console.log(result);
console.log(result2);
console.log(result3);