- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我还没有注意到詹姆斯·牛顿·金写或谈到了什么 JToken
is .我做出了错误的假设,认为它以某种方式持有对 JObject
的引用。 .这不是这些 LINQPad 语句所展示的情况:
var json = @"
{
""item"": {
""foo"": ""4"",
""bar"": ""42""
}
}
";
var jO = JObject.Parse(json);
var jToken = jO["item"]["foo"];
jToken = "5";
jO.ToString().Dump("jO");
jToken.Dump("jToken");
jO
{
"item": {
"foo": "4",
"bar": "42"
}
}
jToken
5
jO["item"]["foo"] == 5
?
最佳答案
先说一下什么是 JToken
是。
JToken
是 JObject
的抽象基类, JArray
, JProperty
和 JValue
. JObject
是JProperty
的合集对象。 A JObject
不能容纳任何其他类型的 JToken
. JProperty
是一个名称-值对。名称始终是字符串,值可以是任何类型的 JToken
除了另一个 JProperty
. JArray
是 JToken
的数组除 JProperty
之外的任何类型的物体. JValue
表示一个 JSON 原始值。它可以包含字符串、数字、 bool 值、日期或空值。请注意 JValue
是与所有其他 JToken 一样的引用类型。 item
的 JProperty .
item
的值是另一个包含两个 JProperties 的 JObject,名为
foo
和
bar
.这些 JProperties 的值都是包含字符串的 JValues(分别为
4
和
42
)。
foo
的值的引用。 JProperty(包含字符串值
4
的 JValue)并将该引用分配给您的
jToken
多变的。注意这个变量的声明类型是JToken,尽管这里的值的实际类型实际上是JValue。 (你可以看到这个,如果你这样做
jToken.GetType().Name.Dump("jToken type")
)
jToken = "5"
这真的意味着与
jToken = new JValue("5")
相同的事情.所以你所做的就是替换你的
jToken
的引用变量(到包含
4
的 JValue)具有对包含
5
的不同 JValue 的新引用.这显然不会对原始 JObject 产生影响。
jToken
到 JValue 然后使用
Value
setter 来设置它。
((JValue)jToken).Value = "5";
关于json.net - JToken 不是 JObject 的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005957/
我有一个像这样的 json 结构: var json = { "report": {}, "expense": {}, "invoices": {}, "projects": {},
实际上,我正在处理从 Framework 3.5 中的旧 VB.NET 项目中的某个 API 获取的一些 JSON 数据 我被困在以下响应的处理中: { "data": { "89359"
我使用 json.net 比较流利,但我正在努力以一种直接的方式提取这个值。 我觉得 json.net 应该能够推断出我正在尝试做什么,这样我就不必为了获得我想要的东西而在整个过程中进行每一步。 下面
我有下面的 Java 代码,其中 Array 是一个自定义对象。 public native int pax_store_get_data_avail_info(DataAvailable[] sta
我尝试查找上述比较,但找不到答案。 因为有多种方法可以获取 JObject(或所有继承自 JToken 的子类型)例如: Method1 . JObject.FromObject(obj); Meth
我有一个变量 projectData,它包含存储在数据库中的有效 json 字符串。 完成以下操作后: JObject obj = new JObject(); obj = JObject.Parse
我有 2 个情景来说明这个问题。 场景一 using System; using Newtonsoft.Json.Linq; public class Program { public sta
我有一个像这样的 JObject: JObject grid = new JObject( new JProperty("myprop", "value
当我尝试解析一个大约有 200mb 的大型 json 文件时遇到问题。我正在用 Newtonsoft.Json 来做这件事。它给出了 OutOfMemory 异常。 这是我的代码: using (St
我正在尝试创建 JObject 的扩展类,它是不可变的。 如果我创建一个如下所示的类,它可以防止实际的 JObject 被修改吗? public class ImmutableJObejct: JOb
我试过了 JObject obj = new JObject(); obj["item1"] = new string[] {"a","b"}; 得到了 Cannot implicitly conv
我有一个 json 字符串,需要转换为 JObject。 例子: String result = ""{"totalSize":1,"done":true,"records":[{"attribute
这个问题在这里已经有了答案: Merge two Json.NET arrays by concatenating contained elements (3 个答案) 关闭 6 年前。 我有第一个
我正在尝试使用 JObject 创建一个像这样的 json 对象: { "input": { "webpage/url": "http://google.com/" }
我有一个使用 LINQ to JSON 构建的 JObject(我正在使用 Json.Net)(也由同一个库提供)。当我在 JObject 上调用 ToString() 方法时,它会将结果输出为格式化
我有一个包含以下内容的 XYZ.Json 文件。 { "ABC": "Account", "CDE": "Balance", "EFG": "Enquiry" } 我尝试使用以下代码从这个
我正在为 Cosmos DB(基于文档或 JSON 的 DB)创建数据库播种器。一些 C# 模型的属性 Config 是 JSON,所以我一直在使用这种类型的代码来设置该属性: Config = JO
概括: 借助美国教育部 API,我计划为计算机科学专业的毕业生创建一个大学列表和工资中位数。但是,许多学校都有空值,并且尝试删除空值会破坏代码,因为您无法在枚举时修改集合。 我的 denullifie
我有一个 JObject 项目,如下所示: { "part": { "values": ["engine","body","door"]
我有以下代码: JToken hours = jToken["hours"]; 它返回以下 JSON: { "monday": [ ["11:00", "21:30"]
我是一名优秀的程序员,十分优秀!