Json.NET:将JObject添加到JArray时报错,求排查解决
问题分析与解决
嘿,问题出在你JObject的初始化方式上,不是添加到JArray的步骤有误哦。
错误根源
你写的new JObject { "Name", "John" }这种集合初始化写法,会把两个字符串(被自动转成JValue类型)挨个往JObject里加,但JObject的结构要求必须是键值对形式的JProperty——它根本不接受直接添加JValue,这才是后续往JArray里加的时候抛出异常的原因(因为这个JObject本身的内部结构就不符合规范啦)。
正确的写法
有两种简单的方式可以创建合法的JObject:
- 显式使用JProperty来定义键值对:
JObject obj = new JObject { new JProperty("Name", "John") }; JArray array = new JArray(); array.Add(obj); // 这时候就能正常运行了
- 用简化的嵌套大括号语法(更常用):
JObject obj = new JObject { { "Name", "John" } }; JArray array = new JArray(); array.Add(obj); // 同样没问题
拓展小技巧
如果要给JObject加多个属性,直接继续添加嵌套的键值对就行:
JObject obj = new JObject { { "Name", "John" }, { "Age", 30 }, { "IsStudent", false } };
这样创建出来的JObject是完全符合Newtonsoft.Json规范的,往JArray里添加自然就不会报错啦。
内容的提问来源于stack exchange,提问作者Nick Bull
相关产品推荐
相关产品推荐

