- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 Node 请求模块,我通过 URL 获取 JSON 数据。 JSON 文件嵌套在多个级别中,并且未以可重复使用的方式进行组织。当前的 JSON 如下所示:
{
"data": {
"series": {
"brochure_image": "range.jpg",
"background_image": "range.jpg",
"Model 1": {
"medium_images": "Model_1.png",
"brand": "Tesla",
"Model 101": {
"medium_images": "Model_101.png",
"brochure_image": "Model_101.png",
},
"Model 102": {
"medium_images": "Model_102.png",
"brochure_image": "Model_102.png",
}
},
"Model 2": {
"medium_images": "Model_2.png",
"brand": "Tesla",
"Model 201": {
"medium_images": "Model_201.png",
"brochure_image": "Model_201.png",
}
}
}
}
}
我想进行重组,以便可以轻松地从前端访问数据。我想这样改变:
[
{
"series":"Model 1",
"model": [
{
"modelName": "Model 101",
"medium_images": "Model_101.png",
"brochure_image": "Model_101.png"
},
{
"modelName": "Model 102",
"medium_images": "Model_102.png",
"brochure_image": "Model_102.png"
}
]
}
{
"series":"Model 2",
"model": [
{
"modelName": "Model 201",
"medium_images": "Model_101.png",
"brochure_image": "Model_101.png"
}
]
}
]
我该怎么做?我的 Node server.js 获取部分如下所示:
const dataUrl = "http://example.com/data/series-data.json";
// API
app.get("/api/getSeriesData", (req, res) => {
request.get(dataUrl, (error, response, body) => {
var json = JSON.parse(body);
var seriesObj = json.data.series;
var seriesArr = [];
for (var series in seriesObj) {
if (seriesObj.hasOwnProperty(series)) {
seriesArr.push({"series": series, "model": seriesObj[series]});
}
}
res.send(seriesArr);
});
});
最佳答案
你可以这样做:
var obj = {
"data": {
"series": {
"brochure_image": "range.jpg",
"background_image": "range.jpg",
"Model 1": {
"medium_images": "Model_1.png",
"brand": "Tesla",
"Model 101": {
"medium_images": "Model_101.png",
"brochure_image": "Model_101.png",
},
"Model 102": {
"medium_images": "Model_102.png",
"brochure_image": "Model_102.png",
}
},
"Model 2": {
"medium_images": "Model_2.png",
"brand": "Tesla",
"Model 201": {
"medium_images": "Model_201.png",
"brochure_image": "Model_201.png",
}
}
}
}
};
var result = [];
Object.keys(obj.data.series).forEach(key => {
if(key.indexOf("Model") === 0){
var o = {series: key, model:[]};
Object.keys(obj.data.series[key]).forEach(k => {
if(k.indexOf("Model") === 0){
o.model.push({modelName: k, medium_image: obj.data.series[key][k].medium_image, brochure_image: obj.data.series[key][k].brochure_image});
}
});
result.push(o);
}
});
console.log(result);
它的作用是循环遍历 .data.series
和 data.series[MODEL NAME]
的所有属性,并仅考虑属性名称以 Model 开头的值。如果并非您感兴趣的所有值的属性名称都以 Model 开头,则此方法将不起作用。在这些情况下,您可能必须使用否定断言(检查它们的属性名称是否不是您不感兴趣的已知名称之一)。
关于javascript - Node : How to restructure nested JSON data getting and organize reusable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494067/
这个问题在这里已经有了答案: What are the rules for JavaScript's automatic semicolon insertion (ASI)? (7 个答案) 关闭
如何在不进行手动编辑或其他任何操作的情况下将名为 index.md 的文件转换为 reStructuredText 文件index.rst? 反之亦然? 此类更改的一般语法是什么? 最佳答案 pand
我有一个基于 Rails 3.2 Multi-Tenancy 子域的应用程序,我正在尝试将其迁移到 PostgreSQL 的模式(每个帐户都有自己的模式——现在所有帐户都使用相同的表)。 所以,我认为
这个问题的灵感来自 How to transform a flow chart into an implementation?它询问从代码中通过算法消除 goto 语句的方法。 answer this
我正在第一次使用 Sphinx 进行一个项目,并且想要创建一个方法(我不确定这是否是它的名称,但与编程方法类似,只是用于执行特定任务的文本正文)来更改我的 Sphinx 项目中的字体。我发现了一个有用
使用 Node 请求模块,我通过 URL 获取 JSON 数据。 JSON 文件嵌套在多个级别中,并且未以可重复使用的方式进行组织。当前的 JSON 如下所示: { "data": { "
如何将颜色用于 ReStructured Text?例如,**hello**翻译成hello .我怎样才能让 ReStructure(rst2html.py) 将 something 翻译成 text
我使用的查询选择检查类型“checks”,并在日志文件中查找引用此检查的最新日志条目。 SELECT checks.*, logs.last_completed_on, logs.completed_
App SDK 1.32 中的选择器似乎无法找到任何项目,尽管查询应该足够通用以提取正确的项目。这是代码,即使最近进行了更改,我认为也能够很好地提取数据。 piChooser = new rally.
我是一名优秀的程序员,十分优秀!