Tsheets API更新工时表自定义字段C#问题:空引用绑定错误
解决C#中更新Tsheets API自定义字段时的空引用错误
嗨,我一眼就看出问题所在啦!你遇到的Cannot perform runtime binding on a null reference错误,是因为你直接给timesheet.customfields["247513"]赋值时,customfields这个嵌套的JObject还没有被初始化,它当前是null,自然没法进行索引绑定操作。
咱们先对照下Postman里的正确结构:
"customfields": { "247513": "DX Piping" }
这里的customfields本身是一个独立的对象,所以在C#里你得先把这个对象创建出来,再往里面添加键值对。
修正后的代码示例
你只需要先初始化customfields为新的JObject,再给指定字段赋值即可:
string costCode= "DX Piping"; dynamic timesheet = new JObject(); timesheet.id = tsID; timesheet.start = isoDate; // 先初始化customfields为新的JObject timesheet.customfields = new JObject(); // 再给目标自定义字段赋值 timesheet.customfields["247513"] = costCode; timesheet.end = isoDate;
或者你也可以用更紧凑的方式直接构建嵌套结构:
string costCode= "DX Piping"; dynamic timesheet = new JObject( new JProperty("id", tsID), new JProperty("start", isoDate), new JProperty("customfields", new JObject( new JProperty("247513", costCode) )), new JProperty("end", isoDate) );
这样就能和Postman里的数据结构完全匹配,不会再出现空引用的问题。本质原因是动态JObject不会自动帮你创建嵌套的子对象,必须显式初始化后才能使用。
内容的提问来源于stack exchange,提问作者Doug Farrell
相关产品推荐
相关产品推荐

