我有JSON必须符合这个标准。
{
"level": [
{
"1": {
"Title": "My First Title",
"Body": "My First Body"
}
},
{
"2": {
"Title": "My Second Title",
"Body": "My Second Body"
}
}
}
虽然我知道它不是世界上最好的JSON,但它必须像这样才能融入复杂的系统。我没有成功找到一种查询“第一级”内部所有内容的方法。我只需要通过“1”,“2”,“3”键来剥离json。
SQL等效项将是:
SELECT Title, Body FROM level WHERE level.id = 1.
我正在努力,因为没有身份证。关键是id因此我不知道要搜索什么。
返回的JSON应该是:
{
"Title": "My First Title",
"Body": "My First Body"
}
答案 0 :(得分:1)
这将返回带有匹配项的Array
:
var queryID = "1";
yourJSON.level.filter(function(row){ return queryID in row; })
答案 1 :(得分:0)
自从你提出SQL以来......你可以使用linq.js
var data = {
"level": [
{
"1": {
"Title": "My First Title",
"Body": "My First Body"
}
}, {
"2": {
"Title": "My Second Title",
"Body": "My Second Body"
}
}
]
};
现在,例如:
var result = Enumerable.From(data.level)
.Where("$.hasOwnProperty(1)")
.FirstOrDefault(null);
result;
// {"1":{"Title":"My First Title","Body":"My First Body"}}
或
var result = Enumerable
.From(data.level)
.Select(function ($) {
var keys = Object.keys($);
return {
id: keys[0],
value: $[keys[0]]
};
})
.Where("$.id == 1")
.Select("$.value")
.FirstOrDefault(null);
result;
// {"Title":"My First Title","Body":"My First Body"}
答案 2 :(得分:0)
我假设您希望所有这些都是一个对象数组:
var levels = [];
json["level"].forEach(function (val) {
Object.keys(val).forEach(function (key) {
levels[key] = val[key];
});
});
现在,如果您查询级别[id],您应该得到所需的结果。