json - JSON中的“\”是什么?
问题描述
我在练习 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。我希望有人能帮助我并了解它是什么。
解决方案
那不是 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);
您通常需要为序列化目的对对象进行字符串化或解析。
推荐阅读
- reactjs - useState 不读取 if 语句之外的变量
- r - 尝试在 R 中处理时间序列时出现“FUN 错误(newX[, i], ...):找不到对象'trend.ts'”
- google-apps-script - 在电子邮件中获取 Google 表单回复
- firebase - 如何使用 Firebase SDK 访问 Hacker News API?
- javascript - 当我在 Chrome 扩展程序中单击 popup.html 中的某个项目时,我无法将任何内容保存到 chrome 或页面的存储中
- python - 新的 Dockerfile 不能使用 .env 文件读取 Python 中的环境变量
- ruby-on-rails - Ruby on Rails 更改日期未保存到对象
- java - 使用 Java 8 流在不同集合中收集 [0..n]、[n+1..l] 元素的最佳方法是什么?
- c - C 程序在 Visual Studio 代码调试期间不会在断点处停止
- javascript - 反应:在特定组件上应用正文溢出