получение значений из объектов json в reactjs

#javascript #json

Вопрос:

Я сохранил адрес в виде JSON в своей базе данных sql, как мне получить доступ к каждому ключу и значению объекта json

Значения таблиц пользователей:

 {
id: 1, 
billing_address: ""{\"country\":\"India\",\"address\":\"23, 4th cross\",\"city\":\"Udupi\",\"state\":\"Tamil Nadu\",\"zip\":\"123456\"}"",
created_at: "2021-06-02T03:16:04.000Z",
email: "xxx@gmail.com",
name: "xxx"
}
 

billing_address содержит поля адрес, страна, город, штат и почтовый индекс.
Как получить доступ к каждому ключу и значению внутри объекта JSON billing_address в ReactJS?

Комментарии:

1. Пожалуйста, проверьте Object.entries и JSON.parse

2. @kiranvj вопрос, на который вы ссылались, не отвечает на вопрос Анджелины. Вместо этого им нужна помощь с JSON.parse.

3. @ChristianFritz Конечно. Проголосовали за повторное открытие.

4. У вас есть строка JSON с двойным кодированием. Чтобы разобрать его, используйте JSON.parse(JSON.parse(obj.billing_address)) . Лучшим вариантом было бы исправить то, что является двойным кодированием

5. @Фил, большое спасибо!

Ответ №1:

Для получения платежного адреса вам необходимо использовать JSON.parse . С вашим текущим форматом данных вам нужно использовать его дважды. Пожалуйста, ознакомьтесь с приведенным ниже кодом.

 var data = {
id: 1, 
billing_address: ""{\"country\":\"India\",\"address\":\"23, 4th cross\",\"city\":\"Udupi\",\"state\":\"Tamil Nadu\",\"zip\":\"123456\"}"",
created_at: "2021-06-02T03:16:04.000Z",
email: "xxx@gmail.com",
name: "xxx"
};

var billingAddress = JSON.parse(JSON.parse(data.billing_address));

console.log("Billing address:", billingAddress);

console.log("Country:", billingAddress.country ); 

Ответ №2:

Вы можете использовать метод JSON.parse() для преобразования строки JSON в объект.

Например:

 const dbAddress = 
{
 id: 1, 
 billing_address: ""{\"country\":\"India\",\"address\":\"23, 4th cross\",\"city\":\"Udupi\",\"state\":\"Tamil Nadu\",\"zip\":\"123456\"}"",
 created_at: "2021-06-02T03:16:04.000Z",
 email: "xxx@gmail.com",
 name: "xxx"
};

const address = 
{
  ...dbAddress,
  billing_address: JSON.parse(JSON.parse(dbAddress.billing_address)),
};

console.log(address);
console.log(address.billing_address.country);