Как я могу отфильтровать значение, соответствующее указанному ключу c в строке? - PullRequest
1 голос
/ 03 августа 2020

В моем коде JS у меня есть строка как

s = "{\"selector\":{\"owner\":\"tom\"}}";  // originally this is a query response 

Я хочу извлечь значение 'owner', которое указано в другой переменной, s1.

Что бы быть самым простым способом сделать это?

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

Чтобы преобразовать ваши данные в объект, используйте obj = JSON.parse(s)

Затем obj.selector.owner или obj["selector"]["owner"], что является рекомендуемым способом получения JavaScript значений объекта. .

1 голос
/ 03 августа 2020

Вы not выбираете правильную properties при доступе к своим response данным. Также вам не нужно использовать toString в JSON.parse. Поскольку ваш response уже является данными string.

Вы хотите преобразовать данные string, используя JSON.parse

Демо:

//Response # 1
let findOwner = "{\"selector\":{\"owner\":\"tom\"}}" 

//Parse Data
let parseData = JSON.parse(findOwner)
console.log(parseData.selector.owner) //Tom

//Response # 2
let findOwner2 = "{\"response\":{\"colour\":\"black\",\"make\":\"Tesla\",\"model\":\"S\",\"owner\":\"Adriana\"}}"

//Parse Data
let parseData2 = JSON.parse(findOwner2)
console.log(parseData2.response.owner) //Adriana
0 голосов
/ 03 августа 2020

Для этого можно использовать функцию:

function get(path, obj) {
  return path.split('.').reduce((acc, current) => acc && acc[current], obj)
}

const obj = "{\"selector\":{\"owner\":\"tom\"}}"
const parsed = JSON.parse(obj)

get('selector.owner', parsed) // return 'tom'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...