如何使用键从 json 中拉出对象?
How can I pull the object from the json using a key?
我正在使用 Typescript。我想迭代下面的 json 文件并根据搜索字符串提取单个对象。
{
"menus": {
"indian": [
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
],
"chinese": [
{
"id": "000126",
"name": "Dish 4"
},
{
"id": "000127",
"name": "Dish 5"
},
{
"id": "000128",
"name": "Dish 6"
}
],
"tandoori": [
{
"id": "000129",
"name": "Dish 7"
},
{
"id": "000130",
"name": "Dish 8"
},
{
"id": "000131",
"name": "Dish 9"
}
]
}
}
我会将响应 json 映射到我的模型 class
export interface Menu {
indian: Item[];
chinese: Item[];
tabdoori: Item[];
}
export interface Item {
id: string;
name: string;
}
const response: Menu = this.myApiService.getAllMenus();
例如我的输入是“indian”然后我需要从json
中拉出对象
"indian": [
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
]
我怎样才能得到这个?
这是一个 typescript playground example,它显示了相同的数据,但来自本地数据。它确实取决于 getAllMenus
returns;我猜它是异步的,所以我们需要知道您在那里使用的是什么。
在 TypeScript 中,属性和 JSON 键是不同的。 getAllMenus().menus
在这种情况下会给你一个错误。相反,请使用 getAllMenus()['menus']
表示法。
export interface Menu {
indian: Item[];
chinese: Item[];
tabdoori: Item[];
}
export interface Item {
id: string;
name: string;
}
function getMenu(response ,name){
return response['menus'][name]
}
同步访问
如果 getAllMenus
returns 一个对象(而不是一个可观察对象):
const response: Menu = this.myApiService.getAllMenus();
console.log(getMenu(response, name));
异步访问:
如果 getAllMenus
returns 是一个可观察对象,需要订阅:
this.myApiService.getAllMenus().pipe(
map( response : Menu => getMenu(response, name))
)
.subscribe( nameItems=> console.log(nameItems) );
输出:
[
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
]
我正在使用 Typescript。我想迭代下面的 json 文件并根据搜索字符串提取单个对象。
{
"menus": {
"indian": [
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
],
"chinese": [
{
"id": "000126",
"name": "Dish 4"
},
{
"id": "000127",
"name": "Dish 5"
},
{
"id": "000128",
"name": "Dish 6"
}
],
"tandoori": [
{
"id": "000129",
"name": "Dish 7"
},
{
"id": "000130",
"name": "Dish 8"
},
{
"id": "000131",
"name": "Dish 9"
}
]
}
}
我会将响应 json 映射到我的模型 class
export interface Menu {
indian: Item[];
chinese: Item[];
tabdoori: Item[];
}
export interface Item {
id: string;
name: string;
}
const response: Menu = this.myApiService.getAllMenus();
例如我的输入是“indian”然后我需要从json
中拉出对象"indian": [
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
]
我怎样才能得到这个?
这是一个 typescript playground example,它显示了相同的数据,但来自本地数据。它确实取决于 getAllMenus
returns;我猜它是异步的,所以我们需要知道您在那里使用的是什么。
在 TypeScript 中,属性和 JSON 键是不同的。 getAllMenus().menus
在这种情况下会给你一个错误。相反,请使用 getAllMenus()['menus']
表示法。
export interface Menu {
indian: Item[];
chinese: Item[];
tabdoori: Item[];
}
export interface Item {
id: string;
name: string;
}
function getMenu(response ,name){
return response['menus'][name]
}
同步访问
如果 getAllMenus
returns 一个对象(而不是一个可观察对象):
const response: Menu = this.myApiService.getAllMenus();
console.log(getMenu(response, name));
异步访问:
如果 getAllMenus
returns 是一个可观察对象,需要订阅:
this.myApiService.getAllMenus().pipe(
map( response : Menu => getMenu(response, name))
)
.subscribe( nameItems=> console.log(nameItems) );
输出:
[
{
"id": "000123",
"name": "Dish 1"
},
{
"id": "000124",
"name": "Dish 2"
},
{
"id": "000125,
"name": "Dish 3"
}
]