.NET中如何为JToken赋值int[]类型数组?
如何给JToken正确赋值int[]类型数组?
我懂你碰到的问题了——直接把字符串形式的数组"[1,2,3,4]"赋值给JToken后,服务器居然把它转成了null,这确实挺坑的。核心原因是JToken对类型的要求很严格,它不会自动把字符串解析成数组类型。下面给你几个靠谱的解决办法:
直接传入强类型int[]数组实例
这是最直接也最不容易出错的方式,JToken可以直接识别强类型数组并转换成对应的JSON数组。示例代码:// 定义int数组 int[] myIntArray = new int[] { 1, 2, 3, 4 }; // 转换为JToken JToken token = JToken.FromObject(myIntArray);这样生成的JToken本质是JSON数组类型,服务器就能正确识别,不会转为null。
先把字符串数组解析为JArray再赋值
如果你手里只有字符串形式的数组,那可以先用JArray.Parse()把字符串解析成JSON数组对象(JArray是JToken的子类,直接兼容),再赋值给JToken。示例代码:string arrayString = "[1,2,3,4]"; // 解析字符串为JArray JArray parsedArray = JArray.Parse(arrayString); // 赋值给JToken JToken token = parsedArray;这种方式相当于先把字符串转换成符合要求的JSON数组类型,完美解决类型不匹配导致的null问题。
构造JObject时直接赋值(两种方式都适用)
如果是在构建JObject的过程中给某个属性赋值int数组,不管用强类型数组还是解析后的JArray都可以:// 方式1:用强类型数组 JObject myObj = new JObject(); myObj["intNumbers"] = new int[] { 1, 2, 3, 4 }; // 方式2:用解析后的JArray string arrayStr = "[1,2,3,4]"; myObj["intNumbers"] = JArray.Parse(arrayStr);
补充说明
为什么直接传字符串会变成null?因为当你把"[1,2,3,4]"赋值给JToken时,它会被标记为字符串类型,而如果服务器端期望接收的是int数组类型,类型不匹配就会被转为null。所以关键是要确保JToken的类型是JSON数组,而不是普通字符串。
内容的提问来源于stack exchange,提问作者sfdcnoob
相关产品推荐
相关产品推荐

