繁体   English   中英

Ruby-如何在不将“ [”变成“ {“ 0”:”的情况下将哈希转换为Json数组

[英]Ruby - How can i convert a Hash to Json array without “[” turning into ''{“0”:"

在JavaScript中,我有一个ajax调用,将json发送到我的ruby控制器

$.ajax({
url: "/email_templates/create_email",
type: "POST",
data: {

    email: email, mjml: mjml
},
success: function(resp) {

},
error: function(resp) {
    console.log('There was an error, please contact support.')
},
});

正在发送的Json如下所示:

{"elements":[{"type":"text","options":{"subSection1":"Text style","font":{"size":16,"sizeOptions":[9,10,11,12,13,14,16,18,24,30,36,48,60,62],"family":"inherit","familyOptions":["inherit","Georgia, serif","'Palatino Linotype', 'Book Antiqua', Palatino, serif","'Times New Roman', Times, serif","Arial, Helvetica, sans-serif","'Arial Black', Gadget, sans-serif","'Comic Sans MS', cursive, sans-serif","Impact, Charcoal, sans-serif","'Lucida Sans Unicode', 'Lucida Grande', sans-serif","Tahoma, Geneva, sans-serif","'Trebuchet MS', Helvetica, sans-serif","Verdana, Geneva, sans-serif","'Courier New', Courier, monospace","'Lucida Console', Monaco, monospace"]},"lineHeight":"s2","backgroundColor":"#ffffff","padding":[15,15,15,15],"text":"Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."},"id":"id1524503670739RAND99067","component":"textTemplate"},{"type":"button","options":{"subSection1":"Button settings","buttonText":"Click me","linkTo":{"type":"none","typeOptions":["link","email","none"],"link":""},"subSection2":"Border style","border":{"size":1,"radius":3,"color":"#3498DB","style":"solid","styleOptions":["dotted","solid","dashed"]},"subSection3":"Button style","fullWidth":"false","align":"center","buttonBackgroundColor":"#3498DB","backgroundColor":"#ffffff","font":{"size":16,"sizeOptions":[9,10,11,12,13,14,16,18,24,30,36,48,60,62],"color":"#ffffff","weight":"normal","italic":"","weightOptions":["bold","lighter","inherit","initial","normal",100,200,300,400,500,600,700,800,900],"family":"inherit","familyOptions":["inherit","Georgia, serif","'Palatino Linotype', 'Book Antiqua', Palatino, serif","'Times New Roman', Times, serif","Arial, Helvetica, sans-serif","'Arial Black', Gadget, sans-serif","'Comic Sans MS', cursive, sans-serif","Impact, Charcoal, sans-serif","'Lucida Sans Unicode', 'Lucida Grande', sans-serif","Tahoma, Geneva, sans-serif","'Trebuchet MS', Helvetica, sans-serif","Verdana, Geneva, sans-serif","'Courier New', Courier, monospace","'Lucida Console', Monaco, monospace"]},"innerPadding":[12,20,12,20],"margin":[0,0,0,0],"padding":[15,15,15,15]},"id":"id1524503666177RAND67491","component":"buttonTemplate"}],"emailSettings":{"id":"id1524503660421RAND64452","component":"emailSettingsTemplate","options":{"width":600,"paddingTop":50,"paddingBottom":50,"backgroundColor":"#f4f5f4"},"type":"emailSettings"},"html":""}

以及我在控制器中收到的内容

def create

body_json = params[:email]

p body_json

end

看起来像:

{"elements"=>{"0"=>{"type"=>"text", "options"=>{"subSection1"=>"Text style", "font"=>{"size"=>"16", "sizeOptions"=>["9", "10", "11", "12", "13", "14", "16", "18", "24", "30", "36", "48", "60", "62"], "family"=>"inherit", "familyOptions"=>["inherit", "Georgia, serif", "'Palatino Linotype', 'Book Antiqua', Palatino, serif", "'Times New Roman', Times, serif", "Arial, Helvetica, sans-serif", "'Arial Black', Gadget, sans-serif", "'Comic Sans MS', cursive, sans-serif", "Impact, Charcoal, sans-serif", "'Lucida Sans Unicode', 'Lucida Grande', sans-serif", "Tahoma, Geneva, sans-serif", "'Trebuchet MS', Helvetica, sans-serif", "Verdana, Geneva, sans-serif", "'Courier New', Courier, monospace", "'Lucida Console', Monaco, monospace"]}, "lineHeight"=>"s2", "backgroundColor"=>"#ffffff", "padding"=>["15", "15", "15", "15"], "text"=>"Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}, "id"=>"id1524503161899RAND77809", "component"=>"textTemplate"}, "1"=>{"type"=>"button", "options"=>{"subSection1"=>"Button settings", "buttonText"=>"Click me", "linkTo"=>{"type"=>"none", "typeOptions"=>["link", "email", "none"], "link"=>""}, "subSection2"=>"Border style", "border"=>{"size"=>"1", "radius"=>"3", "color"=>"#3498DB", "style"=>"solid", "styleOptions"=>["dotted", "solid", "dashed"]}, "subSection3"=>"Button style", "fullWidth"=>"false", "align"=>"center", "buttonBackgroundColor"=>"#3498DB", "backgroundColor"=>"#ffffff", "font"=>{"size"=>"16", "sizeOptions"=>["9", "10", "11", "12", "13", "14", "16", "18", "24", "30", "36", "48", "60", "62"], "color"=>"#ffffff", "weight"=>"normal", "italic"=>"", "weightOptions"=>["bold", "lighter", "inherit", "initial", "normal", "100", "200", "300", "400", "500", "600", "700", "800", "900"], "family"=>"inherit", "familyOptions"=>["inherit", "Georgia, serif", "'Palatino Linotype', 'Book Antiqua', Palatino, serif", "'Times New Roman', Times, serif", "Arial, Helvetica, sans-serif", "'Arial Black', Gadget, sans-serif", "'Comic Sans MS', cursive, sans-serif", "Impact, Charcoal, sans-serif", "'Lucida Sans Unicode', 'Lucida Grande', sans-serif", "Tahoma, Geneva, sans-serif", "'Trebuchet MS', Helvetica, sans-serif", "Verdana, Geneva, sans-serif", "'Courier New', Courier, monospace", "'Lucida Console', Monaco, monospace"]}, "innerPadding"=>["12", "20", "12", "20"], "margin"=>["0", "0", "0", "0"], "padding"=>["15", "15", "15", "15"]}, "id"=>"id1524503164308RAND72755", "component"=>"buttonTemplate"}}, "emailSettings"=>{"id"=>"id1524503150293RAND50259", "component"=>"emailSettingsTemplate", "options"=>{"width"=>"600", "paddingTop"=>"50", "paddingBottom"=>"50", "backgroundColor"=>"#f4f5f4"}, "type"=>"emailSettings"}, "html"=>""}

所以我通常在ruby中将哈希值转换为json的方法是.to_json

但这就是我的输出:

{"elements":{"0":{"type":"text","options":{"subSection1":"Text style","font":{"size":"16","sizeOptions":["9","10","11","12","13","14","16","18","24","30","36","48","60","62"],"family":"inherit","familyOptions":["inherit","Georgia, serif","'Palatino Linotype', 'Book Antiqua', Palatino, serif","'Times New Roman', Times, serif","Arial, Helvetica, sans-serif","'Arial Black', Gadget, sans-serif","'Comic Sans MS', cursive, sans-serif","Impact, Charcoal, sans-serif","'Lucida Sans Unicode', 'Lucida Grande', sans-serif","Tahoma, Geneva, sans-serif","'Trebuchet MS', Helvetica, sans-serif","Verdana, Geneva, sans-serif","'Courier New', Courier, monospace","'Lucida Console', Monaco, monospace"]},"lineHeight":"s2","backgroundColor":"#ffffff","padding":["15","15","15","15"],"text":"Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."},"id":"id1524503835438RAND4461","component":"textTemplate"},"1":{"type":"button","options":{"subSection1":"Button settings","buttonText":"Click me","linkTo":{"type":"none","typeOptions":["link","email","none"],"link":""},"subSection2":"Border style","border":{"size":"1","radius":"3","color":"#3498DB","style":"solid","styleOptions":["dotted","solid","dashed"]},"subSection3":"Button style","fullWidth":"false","align":"center","buttonBackgroundColor":"#3498DB","backgroundColor":"#ffffff","font":{"size":"16","sizeOptions":["9","10","11","12","13","14","16","18","24","30","36","48","60","62"],"color":"#ffffff","weight":"normal","italic":"","weightOptions":["bold","lighter","inherit","initial","normal","100","200","300","400","500","600","700","800","900"],"family":"inherit","familyOptions":["inherit","Georgia, serif","'Palatino Linotype', 'Book Antiqua', Palatino, serif","'Times New Roman', Times, serif","Arial, Helvetica, sans-serif","'Arial Black', Gadget, sans-serif","'Comic Sans MS', cursive, sans-serif","Impact, Charcoal, sans-serif","'Lucida Sans Unicode', 'Lucida Grande', sans-serif","Tahoma, Geneva, sans-serif","'Trebuchet MS', Helvetica, sans-serif","Verdana, Geneva, sans-serif","'Courier New', Courier, monospace","'Lucida Console', Monaco, monospace"]},"innerPadding":["12","20","12","20"],"margin":["0","0","0","0"],"padding":["15","15","15","15"]},"id":"id1524503838073RAND14158","component":"buttonTemplate"}},"emailSettings":{"id":"id1524503495697RAND55315","component":"emailSettingsTemplate","options":{"width":"600","paddingTop":"50","paddingBottom":"50","backgroundColor":"#f4f5f4"},"type":"emailSettings"},"html":""}

为什么会改变

{"elements":[{"type"

{"elements":{"0":{"type"

我需要将它确切地保存到数据库的方式是如何从JavaScript发送,但是我似乎无法将其转换为正确的格式。 有人可以帮助我,向我解释我做错了什么。

我的问题最终是在Javascript方面而不是红宝石

$.ajax({
url: "/email_templates/create_email",
type: "POST",
data: {

    email:email, mjml: mjml
},
success: function(resp) {

},
error: function(resp) {
    console.log('There was an error, please contact support.')
},
});

我应该通过JSON.stringify(email)发送email:email

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM