我无法理解时使用JContainer
,JObject
和JToken
。我从该“标准”的理解JObject
是由JProperties
那JToken
是所有的基础抽象类JToken
的类型,但我不明白JContainer
。
我正在使用C#,而我刚购买了LinqPad Pro 5。
我在文件中有一个JSON数据源,因此我正在使用以下语句成功反序列化该文件的内容:
string json;
using (StreamReader reader = new StreamReader(@"myjsonfile.json"))
{
json = reader.ReadToEnd();
}
那时,我将JSON字符串对象反序列化为a JObject
(这可能是我的错误-
也许我需要jsonWork
输入JToken
or或JContainer
?):
JObject jsonWork = (JObject)JsonConvert.DeserializeObject(json);
在我的JSON数据(由JSON表示的字符串)中,我有三个对象-顶级对象与此类似:
{
"Object1" : { ... },
"Object2" : { ... },
"Object3" : { ... }
}
每个对象都由各种标记(数组,字符串,其他对象等)组成,因此它是动态JSON。(我使用省略号作为占位符,而不是用大量JSON数据弄混了这个问题。)
我要处理"Object1"
,"Object2"
和"Object3"
单独使用LINQ,但是。所以,理想情况下,我想要这样的东西:
// these lines DO NOT work
var jsonObject1 = jsonWork.Children()["Object1"]
var jsonObject2 = jsonWork.Children()["Object2"]
var jsonObject3 = jsonWork.Children()["Object3"]
但是以上几行失败了。
我用var
上面的,因为我不知道我应该使用什么样的对象类型:JContainer
,JObject
或JToken
!就是这样,您知道我想做什么,一旦jsonObject#
正确分配了上述变量,我想使用LINQ来查询它们包含的JSON。这是一个非常简单的示例:
var query = from p in jsonObject1
where p.Name == "Name1"
select p
当然,我的LINQ最终将在jsonObject
变量中过滤JSON数组,对象,字符串等。我想一旦开始,我可以使用LinqPad来帮助我使用LINQ过滤JSON。
我发现如果我使用:
// this line WORKS
var jsonObject1 = ((JObject)jsonWork).["Object1"];
然后我JObject
输入jsonObject1
。这是正确的方法吗?
目前还不清楚我的时候/为什么人会使用JContainer
的时候似乎JToken
并JObject
反对使用LINQ工作得很好。目的是JContainer
什么?
JContainer
是具有子项的JSON元素的基类。JObject
,JArray
,JProperty
并JConstructor
从它的所有继承。
例如,以下代码:
(JObject)JsonConvert.DeserializeObject("[1, 2, 3]")
会抛出一个InvalidCastException
,但是如果将其强制转换为JContainer
,那就很好了。
关于您的原始问题,如果知道您在顶层有JSON对象,则可以使用:
var jsonWork = JObject.Parse(json);
var jsonObject1 = jsonWork["Object1"];
JToken SSO 令牌单点登录集成插件,为多个系统的单点登录集成提供一键登录和一键注销的功能,以 API 接口方式提供集成,只需编写简短的几行集成代码,集成开发方便。系统间以共享密钥文件,向客户端用户发放令牌,采用私钥加密和公钥解密的方式进行传递和认证。
问题内容: 我正在尝试找出如何在LINQ中编写SQL语句,但是暂时找不到一种方法,这是SQL命令: 有人可以帮我使用linq语法吗? **到目前为止,我一直在尝试(感谢levanlevi) 但我收到以下错误: http://i.stack.imgur.com/AkJ5V.png 问题答案:
大多数应用程序都是以数据为中心的,但大多数数据存储库都是关系数据库。 多年来,设计人员和开发人员基于对象模型设计了应用程序。 对象负责连接到数据访问组件 - 称为数据访问层(DAL)。 在这里我们要考虑三点: 应用程序中所需的所有数据都不存储在同一个源中。 源可以是关系数据库,某些业务对象,XML文件或Web服务。 访问内存中对象比从数据库或XML文件访问数据更简单,更便宜。 访问的数据不直接使用
$linq 是 .NET 库 LINQ 的 JavaScript 版,支持查询、条件查询、排序、distinct、分组、联合和排除查询等。 $linq 同时实现了一些来自 MoreLinq 中的方法,可与 jQuery 的集合和数组协作。 示例程序: var people = [{ Name: "Senthil Kumar"}, { Name: "Norton Stanley"},
语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。 传 统上,针对数据的查询都是以简单的字符串表示,而没有编译时类型检查或 IntelliSense 支持。此外,您还必须针对以下各种数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。LINQ 使查
问题内容: 我有一个SQL语句,我正在尝试将其转换为LINQ to SQL,并且已经设法将其中的大多数转换了,但是遇到了一个语句,我无法在LINQ中全神贯注。 引起头痛的SQL查询部分是: 是包含一系列操作的表,是可用操作的列表。是状态列表的索引-4 ==’失败’。 基本上,对于 未 失败的动作,它需要返回 下一个 动作。如果行动 已经 失败,它返回 当前 的行动。 这只是联接之一(完整查询中总共