繁体   English   中英

使用Javascript将嵌套密钥添加到JSON

[英]Adding Nested Key To JSON Using Javascript

我刚刚开始学习Javascript,因此如果这是一个愚蠢的问题,我深表歉意。

基本上我的问题是这样的:

通过无法更改的外部格式,我收到以下数据。

var data = "{\"status\": \"created\", \"name\": \"mike\", \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\", \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\" }"

在通过API发送数据之前,文档要求我添加一个附加的嵌套键(templateRoles),以将角色名,emailsubject和email包装到一个新数组中。 最终结果应该看起来像这样。

var data = "{\"status\": \"created\", \"name\": \"mike\", \"templateRoles\": [{ \"roleName\": \"Signer\", \"emailSubject\": \"test\", \"email\": \"hellO@yahoo.com\"}], \"templateId\": \"0171502E-38F7-43A7-BA09-6FC1FDAB09C2\"}"

对于我的一生,我不知道该怎么做。 我试过使用拼接和替换,但是我做错了或者这不是正确的方法。 任何建议或正确方向的指点将不胜感激。

提前致谢。

使用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);

因此您的基本代码将如下所示。 使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

要么

if (parsedJson["someKey"] === undefined)
    // do something

暂无
暂无

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

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