将json结构转换为jquery angularjs中的嵌套json结构
我可以知道如何将我当前的json文件转换为嵌套的json结构,如下所示,我尝试了几种方法( 如何使用jquery将表单输入字段转换为嵌套的json结构 ),但我没有得到它,请帮助我,我做错了,这样我们就可以使用ng-repeat在我的视图页面上迭代图像值。 如果我使用下面的内容,它不会按照我想要的结构给出。
html: 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 -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 = $("", { 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"
新元素。