问题标签 [linq-to-json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1228 浏览

c# - LINQ to JSON - 来自动态嵌套数组的设置列表

这是我拥有的 json 字符串。

如何选择#text2015、2016、2017 年的 EPS 数据?这是我到目前为止的查询:

这是我正在使用的 jsonExtensions:

问题是EPS不会总是在下一家公司处于同样的位置吗?因此,我希望查询搜索 EPS 客户端代码并返回上述年份的值,希望使用 DRY 方法。你能帮我完成我的查询吗?

注意: 我实际上是在下载一个 XML 字符串,将其转换为 JSON,然后对其进行解析。

0 投票
1 回答
1774 浏览

json - LINQ to JSON - 来自可能是 JValue 或 JArray 的 JToken 的 NullReferenceException 错误

我正在尝试根据数组或值的第一个元素选择 roleId 为 4 的所有用户。我怎样才能做到这一点?另外,我怎样才能显示roleId?这是我的 JSON 字符串:

这是我正在使用的查询:

我收到以下错误((int[]) ids.ToObject(typeof(int[]))).Any(k => k == 4)

NullReferenceException:对象引用未设置为对象的实例。

最后,我的结果应该是:Joe Schmoe& Steve Jobs,只有。

我究竟做错了什么?

0 投票
1 回答
134 浏览

c# - JSON.Net - 从多态 json 字符串中检索另一个数据

这是我的 JSON 字符串的样子:

我正在关注从LINQ 到从多态 json 检索 Json 数据的代码示例。我想选择以下内容,但前提是部分中只有一个发行者Symbol并且最新版本的 PDF url:

  • @docId
  • @PrimarySymbol
  • @BmId
  • #cdata-section(但仅适用于最新版本的 PDF)

这是我的查询的样子:

现在,我可以成功获取 Google 的所有字段,但我无法获取 Apple 的 PDFUrl(因为我不知道如何获取最新版本)。另外,我怎样才能完成我的 Where 子句,以便它只选择带有 1 个符号的文档?所以,最后,我的清单将如下图所示:

结果

0 投票
1 回答
782 浏览

c# - Linq-To-JSON 遍历祖先树以获取最近父级的 JProperty

我在这里有一个小提琴: https ://dotnetfiddle.net/x6u5wH

我有两个问题,但公平地说,我会将它们分成两个帖子。发布后,我将在本文顶部添加指向第二个问题的链接。

总结 如果您运行上述小提琴,您将看到结果显示正在处理的 JProperty。美好的。

问题是“Immediate Ancestor Property Name”的值,目前显示的是预期值。但是,如果我希望祖先的值显示作为最近父的祖先的 JProperty 名称怎么办?我将解释我所说的“最近的父母”是什么意思,因为它可能有一个我不知道的实际 JSON 术语。

为了说明,让我们关注 JSON 中的 Data7 属性。请注意,它是 JArray Data5 中的第二个元素(Data6 是第一个元素)。

问题 我想做的是创建一个 Linq 查询,它查看当前属性,然后沿着祖先树向上查找最近的父属性。从 Data8 开始,最近的父节点是 Data7。但是,与 Data7 最接近的父级将是 Data4,而不是 Data5。我不认为 Data5 是最近的父级,因为 Data5 是一个包含 Data6 和 Data7 的 JArray。当涉及 JArrays 时,我想要 JArray 的父级,无论是 JArray 还是 JObject。Data6 的父级也是 Data4。

Data4 的父级是 Data3;对于 Data3,父级是 Data2;对于 Data2,父级将是 Data1(Data 将有一个空/空父级)。

谢谢。

PS如果小提琴消失了,这里是有问题的代码:

0 投票
1 回答
865 浏览

c# - Linq-to-JSON SelectToken 方法混淆和替代方案

我希望我可以在不提供代码示例的情况下提出这个问题,因为它更多的是关于缺少文档和潜在的替代方法/命令。

在我现有的 Linq-to-JSON 代码中,我有这个片段:

此代码位于更大的 Linq 查询中,该查询遍历所有 JArray 和所有从根 JSON 对象下降的 JObject 对象。

我的问题与p.SelectToken("COMPANY"). 这似乎是在查看父 JSON 中的祖先树,并获取它看到的名为“COMPANY”的第一个或默认令牌的 VALUE。这正是我需要它做的。但我现在有两个额外的要求:

  1. 我知道任何名为“COMPANY”的标记总是会映射到一个字符串值。
  2. 我需要获取与 COMPANY 一起使用的兄弟字符串值 JProperty 对象。

因此,我可能有一个如下所示的 JSON 片段:

在此示例中,我想使用p.SelectToken来查找包含“COMPANY”条目的第一个祖先标记——但随后我需要构建一个包含所有同级 JProperty 值的列表,以便列表包含这些 JProperty 元素:

返回到 Select 的 lambda 表达式中的 p.SelectToken。我对 Linq 或各种 JSON.NET 方法知之甚少,不知道要使用 SelectToken 以外的方法来选择与所选标记位于同一对象中的所有同级属性。我尝试使用.Where带有 lambda 的 a (jt => (jt.Type == JTokenType.JProperty),然后使用.Select带有 lambda 的 a (p => p.Name == "COMPANY"),但这总是产生 0 结果。我只是迷路了。我唯一能想到的是,解决方案可能需要的不仅仅是更新 lambda 表达式,例如带有附加变量的完整函数等。

此外,我在 JSON.NET 上找不到任何适用于 SelectToken 的好的文档。我只看到一个简单的例子和​​一个关于它的作用的句子。如果还有其他资源可以学习此类 JSON.NET Linq 方法,请分享。

0 投票
1 回答
9179 浏览

c# - 转换列表到 JObject

考虑这段代码:

我最终得到一个List<JProperty>.

有没有使用 Linq 或 JSON.NET 函数将该List<JProperty>对象转换为 JObject 的快速方法,而无需在循环中从头开始构建 JObject?

0 投票
3 回答
51 浏览

c# - 查找上一个实际报告的季度

我正在尝试查找最后一个实际报告的季度及其随附的显示值。条件是 @clientsDescription 或 @displayName 必须是 EPS。这是我的 JSON 字符串的样子:

这是 json 类的样子:

由于有人要求原始 XML,所以它是:

这是我的 JSON 提要的代码:

最后,我需要:

我收到以下错误:

我究竟做错了什么?

0 投票
2 回答
8345 浏览

c# - JArray.Remove(JToken) 不删除

我有一个带有类似 JSON 的 JObject:

我想按名称删除一组。所以我有这样的代码:

但是方法 JArray.remove(Jtoken item) 返回 false (这意味着它不能被删除)。这里的信息:

https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JArray_Remove.htm

所以尝试设置参数JToken group = new JValue (groupName); JToken group = new JValue (groupName); as JTokenJValue group = new JValue (groupName);但它不起作用:S

这个人很好地解释了 JToken 层次结构,但我不知道我做错了什么。

https://stackoverflow.com/a/38560188/8849646

0 投票
2 回答
3618 浏览

c# - Json.NET 小数精度损失

我对反序列化十进制值有疑问。

如果我在调试器下的 VS 中键入此代码,结果是

如果我试试这个

结果是8777.83143832257

我哪里错了?我应该使用哪些 api 方法来获得正确的结果?

0 投票
1 回答
1233 浏览

linq - LINQ to JSON - 选择特定属性匹配的数组对象元素

我的 LINQ-Fu 技能非常糟糕,在查看 JSON.NET 示例之后,我仍然无法弄清楚如何选择我所追求的数据。我有一团JSON如下......

我正在尝试编写一个 LINQ to JSON 表达式,它允许我选择值等于“组织准备”的id元素的值。name

以上是我尝试过的 LINQ 表达式,但最终出现Object reference not set to an instance of an object.错误。我想避免必须编写一个类来表示 JSON,以便可以对其进行反序列化。