我刚刚开始学习Javascript,所以如果这是一个愚蠢的问题我会道歉。
基本上我的问题是:
通过我无法更改的外部表格,我收到以下数据。
var data = "{\"status\": \"created\", \"name\": \"mike\", \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\", \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\" }"
在我通过API发送数据之前,文档要求我添加一个额外的嵌套密钥(templateRoles)来将rolename,emailsubject和email包装到一个新数组中。最终结果假设看起来像这样。
var data = "{\"status\": \"created\", \"name\": \"mike\", \"templateRoles\": [{ \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\"}], \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\"}"
对于我的生活,我无法弄清楚如何做到这一点。我尝试过使用拼接和替换,但要么是我做错了,要么是不正确的做法。任何有关正确方向的建议或指示都将不胜感激。
提前致谢。
答案 0 :(得分:0)
使用JSON.parse(data)
将您的JSON字符串转换为对象。然后你可以操纵那个对象。完成操作后,只需使用JSON.stringify()
来获取JSON字符串。
示例代码:
var data = "{\"status\": \"created\", \"name\": \"mike\", \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\", \"templateRoles\": [{ \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\"}]}";
var jsonObj = JSON.parse(data);
jsonObj.templateRoles = "some roles here";
var newDataStr = JSON.stringify(jsonObj);
答案 1 :(得分:0)
所以你的基本代码看起来像这样。将JSON字符串设为JavaScript对象,然后对其进行操作。之后,您可以使用JSON.stringyfi
放回JSON字符串。
var jsonData = "{\"status\": \"created\", \"name\": \"mike\", \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\", \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\"}";
var parsedJson = JSON.parse(jsonData);
// now manipulate
parsedJson.newProperty = "hey there";
parsedJson.status = "not created";
作为旁注,我不认为您可以订购密钥,因此您可以在添加属性或功能方面做任何事情。永远不要依赖钥匙。按键,我的意思是对象的函数名称的属性。对象以字典类型的方式保存,其中键包含信息。
所以:
parsedJson["created"]
与
相同parsedJson.created
您可以根据密钥是否存在有条件地添加数据:
for (var key in parsedJson)
if (key === "someKey")
// do something
OR
if (parsedJson["someKey"] === undefined)
// do something