2017-10-10 217 views
0

我试图字符串化阵列,以实现这一JSON:JSON字符串化阵列

{"fields":{"TITLE":"title text", 
"NAME":"name text", 
"EMAIL":[{"VALUE":"[email protected]","VALUE_TYPE":"WORK"}], 
"PHONE":[{"VALUE":"555-111-222", "VALUE_TYPE":"WORK"}], 
"ASSIGNED_BY_ID":"10", 
"SOURCE_ID":"WEB", 
"STATUS_ID":"ASSIGNED", 
"COMMENTS":"comments text"} 
} 

这里是我的代码:

var Lead = {}; 
Lead.fields = {}; 
Lead.fields.TITLE = $("#name").val(); 
Lead.fields.NAME = $("#name").val(); 
Lead.fields.EMAIL = {}; 
Lead.fields.EMAIL.VALUE = $("#eml").val(); 
Lead.fields.EMAIL.VALUE_TYPE = "WORK"; 
Lead.fields.PHONE = {}; 
Lead.fields.PHONE.VALUE = $("#phone").val(); 
Lead.fields.PHONE.VALUE_TYPE = "WORK"; 
Lead.fields.ASSIGNED_BY_ID = "4"; 
Lead.fields.SOURCE_ID = "WEB"; 
Lead.fields.STATUS_ID = "ASSIGNED"; 
Lead.fields.COMMENTS = "Finest Meetings Contact Form:" +$("#comment").val(); 
var DataParsed = JSON.stringify(Lead); 

这除了包裹在电子邮件和电话的元素实现了一切方括号,因此随后我的帖子到REST API失败。很显然,我可以手动构建JSON字符串,并将所有内容都手动放在正确的位置,但是有没有更简单的方法来实例化EMAIL和PHONE数组以自动放置它们? 感谢

+0

设置默认JSON并相应地推送您的数据。 –

回答

0

我们可以简化这个代码很多。

只是声明你的结构是这样,而不是像你这样访问每个个人财产:

var Lead = { 
    fields: { 
    TITLE: $("#name").val() 
    NAME: $("#name").val(), 
    EMAIL: [{ VALUE: $("#eml").val(), VALUE_TYPE: "WORK" }], 
    PHONE: [{ VALUE: $("#phone").val(), VALUE_TYPE: "WORK" }], 
    ASSIGNED_BY_ID: "4", 
    SOURCE_ID: "WEB", 
    STATUS_ID: "ASSIGNED", 
    COMMENTS: "Finest Meetings Contact Form:" +$("#comment").val() 
    } 
}; 

var DataParsed = JSON.stringify(Lead); 

正如你所看到的,这看起来很多像你期望的输出了。

0

至于你说自己说的,它是一个数组,所以这应该工作:

Lead.fields.EMAIL = [{}]; 
Lead.fields.EMAIL[0].VALUE = $("#eml").val(); 
Lead.fields.EMAIL[0].VALUE_TYPE = "WORK"; 
Lead.fields.PHONE = [{}]; 
Lead.fields.PHONE[0].VALUE = $("#phone").val(); 
Lead.fields.PHONE[0].VALUE_TYPE = "WORK"; 
+0

谢谢 - 这两种解决方案都可以工作。 – JC957