Что такое "\" в JSON? - PullRequest
       2

Что такое "\" в JSON?

0 голосов
/ 10 марта 2020

Я практикую JSON парсинг, и я столкнулся с такого рода JSON

{
"data": {
  "Location": "[{\"id\":\"asdiqwe321\",\"name\":\"Manila\",\"lat\":25.42952,\"long\":-96.7960712,\"rating\":3,\"address\":\"Manila Ph\"},{\"place_id\":\"zzxdasdqwe1235as\",\"name\":\"Quezon City Ph.\",\"lat\":12.523562,\"long\":24.663415,\"rating\":1,\"address\":\"Quezon City Ph\"},{\"place_id\":\"rtiDFSDQ1321\",\"name\":\"Makati\",\"lat\":32.151236,\"long\":21.24124561,\"rating\":3.5,\"address\":\"Makati PH\"}]"
}
}

У меня есть модель, и я хочу ее там разыграть:

export interface Location{    
 place_id: string,
 name: string,
 lat: number,
 long: number,
 rating: number,
 address: number
}

Это Я впервые столкнулся с этим типом JSON. Я надеюсь, что кто-то поможет мне и поймет, что это такое.

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Это не JSON Объект, это строка. Символ \ используется для экранирования двойной кавычки ", иначе JavaScript интерпретирует двойную кавычку как конец строки и выдаст ошибку синтаксического анализа.

Если вы хотите получить доступ к строка как объект, вам нужно разобрать её используя JSON.parse:

const obj = {
"data": {
  "Location": "[{\"id\":\"asdiqwe321\",\"name\":\"Manila\",\"lat\":25.42952,\"long\":-96.7960712,\"rating\":3,\"address\":\"Manila Ph\"},{\"place_id\":\"zzxdasdqwe1235as\",\"name\":\"Quezon City Ph.\",\"lat\":12.523562,\"long\":24.663415,\"rating\":1,\"address\":\"Quezon City Ph\"},{\"place_id\":\"rtiDFSDQ1321\",\"name\":\"Makati\",\"lat\":32.151236,\"long\":21.24124561,\"rating\":3.5,\"address\":\"Makati PH\"}]"
}
};


const locationString = obj.data.Location;
const locationObject = JSON.parse(locationString);
console.log(locationObject[0].id);

Если вы не проанализируете его, вместо этого obj.data.Location будет просто строкой:

const obj = {
"data": {
  "Location": "[{\"id\":\"asdiqwe321\",\"name\":\"Manila\",\"lat\":25.42952,\"long\":-96.7960712,\"rating\":3,\"address\":\"Manila Ph\"},{\"place_id\":\"zzxdasdqwe1235as\",\"name\":\"Quezon City Ph.\",\"lat\":12.523562,\"long\":24.663415,\"rating\":1,\"address\":\"Quezon City Ph\"},{\"place_id\":\"rtiDFSDQ1321\",\"name\":\"Makati\",\"lat\":32.151236,\"long\":21.24124561,\"rating\":3.5,\"address\":\"Makati PH\"}]"
}
};


console.log(typeof obj.data.Location);

Обычно для преобразования в сериализацию необходимо разбивать или разбирать объекты.

1 голос
/ 10 марта 2020

Это массив объектов типа Location в сериализованной форме.

var response = {
  "data": {
    "Location": "[{\"id\":\"asdiqwe321\",\"name\":\"Manila\",\"lat\":25.42952,\"long\":-96.7960712,\"rating\":3,\"address\":\"Manila Ph\"},{\"place_id\":\"zzxdasdqwe1235as\",\"name\":\"Quezon City Ph.\",\"lat\":12.523562,\"long\":24.663415,\"rating\":1,\"address\":\"Quezon City Ph\"},{\"place_id\":\"rtiDFSDQ1321\",\"name\":\"Makati\",\"lat\":32.151236,\"long\":21.24124561,\"rating\":3.5,\"address\":\"Makati PH\"}]"
  }
}

Вы должны его проанализировать.

var locationData : Array<Location> = JSON.Parse(response.data.Location);
...