首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json对象的node.js正确扩展

json对象的node.js正确扩展
EN

Stack Overflow用户
提问于 2017-10-06 15:37:35
回答 1查看 64关注 0票数 0

我目前在一个项目中使用node-ews通过node.js访问Exchange Web Server。现在我遇到了一个奇怪的问题。例如,为了运行"CreateItem“请求,例如,可以是电子邮件或约会,我将参数作为json提供给函数,如下所示

代码语言:javascript
复制
var args = {
    "attributes" : {
        "SendMeetingInvitations" : "SendToAllAndSaveCopy"
    },
    "SavedItemFolderId": {
        "DistinguishedFolderId": {
            "attributes": {
                "Id": "calendar"
            }
        }
    },
    "Items" : {
        "CalendarItem" : {
            "Subject" : "",
            "Body" : {
                "attributes" : {
                },
                "$value" : ""
            },
            "ReminderIsSet" : "true",
            "ReminderMinutesBeforeStart" : "30",
            "Start" : "",
            "End" : "",
            "IsAllDayEvent" : "false",
            "LegacyFreeBusyStatus" : "Busy",
            "Location" : ""
        }
    }
};

因为我正在编写的REST-API将接收诸如主题、开始、结束等属性。

代码语言:javascript
复制
args.Items.CalendarItem.Subject = req.body.Subject;

奇怪的是,这会导致CalendarItem的内部验证失败,并告诉我node-ews有一个无效的子主题。如果我在初始参数中将Subject als保留为空字符串,稍后将其更改为req.body.Subject,它就可以正常工作。

我的问题是:如果我稍后添加属性,对象是否会有所不同,如果是,是否有正确的方法?因为我不认为在我的对象中有一堆空属性是最好的方法,即使api不需要发送它们,也不能为所有空属性定义标准值。

如果有人知道答案就太好了。希望我能弄清楚问题出在哪里

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 22:37:48

好的,

所以问题似乎是这样的。在内部,JSON“对象”似乎有一个基于变量定义顺序的顺序。在JavaScript中这是没有问题的。但是当解析xml时,最后定义的标记也将位于xml的末尾,因此如果您有

代码语言:javascript
复制
   <someTag>
     <variable2 />
     <variable3 />
   </someTag>

并通过someTag.variable1 =x将variable1添加到您的json中,最后,经过node-ews解析后的xml如下所示

代码语言:javascript
复制
   <someTag>
     <variable2 />
     <variable3 />
     <variable1 >x</variable1>
   </someTag>

不幸的是,exchange web服务器似乎对xml标记的顺序过于挑剔。因此,当您构建json时,请确保使用直接订单。稍后更改json的内容不会影响顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46600648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档