gpt4 book ai didi

javascript - 将json结构转换为jquery angularjs中的嵌套json结构

转载 作者:行者123 更新时间:2023-11-27 23:52:35 24 4
gpt4 key购买 nike

我可以知道如何将当前的 json 文件转换为嵌套的 json 结构,如下所示,我尝试了几种方法( How to convert form input fields to nested json structure using jquery ),但我没有得到它,请帮助我在哪里我做错了,所以我们可以使用 ng-repeat 迭代我的 View 页面上的 imageurl 值。如果我使用下面的内容,它不会按照我想要的结构给出。

html:

<form id="controlid" method="post" action="" enctype="multipart/form-data" >
<input type="hidden" value="3d{{$index}}" name="3d" >
<input type="hidden" value="sliceX{{$index}}" name="sliceX">
<input type="hidden" value="sliceY{{$index}}" name="sliceY" >
<input type="hidden" value="sliceZ{{$index}}" name="sliceZ">
<input type="button" id="submitButton" value="Save">
</form>

jquery:

$("#submitButton").on('click', function(e) {
var el = document.querySelectorAll('#text [type="hidden"]');
var arr = [];
var obj = {};
var push = false;
for(var i = 0; i < el.length; i ++){
if(el[i].value.indexOf('/tests/images') > -1){
if(push){
arr.push(obj);
obj = {};
};
obj.name = 'imageurl';
obj.value = el[i].value;
push = true;
}
obj.parts = obj.parts || [];
obj.parts.push({
name: el[i].name,
value: el[i].value
});
}

var fileDataToSave = $(obj).serializeArray();
var jsoncontent = JSON.stringify( fileDataToSave );
var $downloadAnchor = $("<a/>", {
href: 'data:text/json;charset=UTF-8,' + jsoncontent,
download: "info.json"
});
$downloadAnchor.css({"position": "absolute", "left": "970px", "top":"258px"});
$downloadAnchor.text("Click here to download JSON");
$("form").append($downloadAnchor);
e.preventDefault();
return false;
});

当前 json:

[{"name":"imageurl","value":"/tests/images/Image1.nii"},{"name":"3d","value":"3d0"},{"name":"sliceX","value":"sliceX0"},{"name":"sliceY","value":"sliceY0"},{"name":"sliceZ","value":"sliceZ0"},{"name":"imageurl","value":"/tests/images/Image2.nii"},{"name":"3d","value":"3d1"},{"name":"sliceX","value":"sliceX1"},{"name":"sliceY","value":"sliceY1"},{"name":"sliceZ","value":"sliceZ1"}]`

`desired json structure:` [
{"name":"imageurl","value":"/tests/Image1.nii", parts: [
{"name":"3d","value":"3d0"},
{"name":"sliceX","value":"sliceX0"},
{"name":"sliceY","value":"sliceY0"},
{"name":"sliceZ","value":"sliceZ0"},
]},

{"name":"imageurl","value":"/tests/Image2.nii", parts: [
{"name":"3d","value":"3d1"},
{"name":"sliceX","value":"sliceX1"},
{"name":"sliceY","value":"sliceY1"},
{"name":"sliceZ","value":"sliceZ1"}
]}
]

最佳答案

纯 JavaScript 解决方案。

var json; // your current json object
var newJson = [];

for (var i = 0; i < json.length; i++) {
var node;
if (json[i].name === "imageurl") {
node = json[i];
var parts = [];
for (var j = i + 1; j < json.length; j++) {
if (json[j].name !== "imageurl") {
parts.push(json[j]);
} else {
i = j - 1;
break;
}
}
node.parts = parts;
newJson.push(node);
}
}

我们只需循环遍历所有元素,找到具有 name === "imageurl" 的元素,并将其余元素添加为部分,直到找到具有 name === "imageurl"的新元素.

http://plnkr.co/edit/Y7UtcwHwwo8dfP8ONk9S?p=preview

关于javascript - 将json结构转换为jquery angularjs中的嵌套json结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com