如何从 JObject 获取第一个键?

2024-04-19

我在用Newtonsoft.Json在我的项目中。我有JObject像这样:

{
    "4781":"Name 1",
    "1577":"Name 2",
    "9973":"Name 3"
}

我成功解析它JObject.Parse()。我需要从此 JObject 获取第一个密钥(“4781”)。我怎样才能得到它?


Json.NET 没有directly提供对属性的整数索引访问JObject https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Linq_JObject.htm.

如果你这样做JObject.Parse(jsonString)[0]你得到一个ArgumentException与消息

使用无效键值访问的 JObject 值:0。需要对象属性名称。”

Demo #1 here https://dotnetfiddle.net/dZnmhQ.

我怀疑 Json.NET 是这样实现的,因为JSON标准 https://json.org/指出,“安object is an 无序的名称/值对的集合。”

话虽如此,JObject继承自JContainer https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Linq_JContainer.htm这确实明确地 https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Linq/JContainer.cs#L920实施IList<JToken>。因此,如果你向上转换JObject to IList<JToken>您可以通过与文档顺序相对应的整数索引来访问属性:

IList<JToken> obj = JObject.Parse(jsonString);
var firstName = ((JProperty)obj[0]).Name;

演示小提琴#2here https://dotnetfiddle.net/5pn93V.

或者,您可以使用 LINQ 来实现类型安全的解决方案,而无需任何强制转换:

using System;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;


var obj = JObject.Parse(jsonString);
var firstName = obj.Properties().Select(p => p.Name).FirstOrDefault();

演示小提琴 #3here https://dotnetfiddle.net/Am7qFA.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 JObject 获取第一个键? 的相关文章

  • 需要帮助处理 Application.xaml 文件中的 DataTemplate 事件

    我的应用程序中有一个包含几个按钮的数据模板 我希望这些按钮的偶数处理程序在当前页面 我在许多页面中使用此模板 而不是在 Application xaml vb cs 文件中触发 因为我希望在每个页面上执行不同的操作 我希望我说清楚了 您可以
  • 我对 MVVM 模式有一些疑问

    我叫 Jes s 来自西班牙 是一名 NET 开发人员 几天前我刚刚发现了这个伟大的网络 我有一些关于 MVVM 模式的问题 如果您能回答我 我将很高兴 我三个月前开始使用 WPF 并且学习了 MVP 模式 MVP 非常好 因为您可以很好地
  • 当绑定值为 null 时出现 WPF 日期选择器验证错误

    我有一个 WPF 应用程序 其中使用绑定到实体框架 带有 SQL Server 实体的日期字段的日期选择器 我将其绑定如下
  • 如何在WPF中使用一次性视图模型?

    如果视图模型引用非托管资源或具有事件处理程序 例如调度程序计时器上的处理已过去 如何确保视图模型得到正确处理 在第一种情况下 终结器是一种选择 虽然并不理想 但在后者中 它永远不会被调用 我们如何判断何时不再有视图附加到视图模型 我通过执行
  • 在 WPF 树视图中获取 FullPath?

    如果我以编程方式创建 WPF TreeView 例如 TreeView treeView lt added in the designer TreeViewItem rootNode new TreeViewItem rootNode He
  • 如何创建自动滚动文本框

    我有一个 WPF 应用程序 其中包含一个多行文本框 用于显示调试文本输出 如何设置文本框 以便将文本附加到框中时 它会自动滚动到文本框的底部 我正在使用 MVVM 模式 理想情况下 纯 XAML 方法会很好 TextBox 本身不一定是焦点
  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 在 MVVM 中设置可见性的最佳方法

    In my View我有三个对象 其中一个在任何给定时间都是可见的 在我的Model我有一个枚举来代表这三个状态 我应该如何实施我的ViewModel a 为每个对象的可见性创建一个布尔值 并将每个对象绑定到该布尔值 使用 bool gt
  • 无法加载文件或程序集“Newtonsoft.Json”或其依赖项之一

    首先 它不仅仅是重复的 以下问题的答案都不适合我 http goo gl tS40cn http goo gl tS40cn http goo gl pH6v2T http goo gl pH6v2T 我刚刚使用 Nuget 包管理器更新了
  • 手动更新目标后,单向绑定停止工作

    我有这样的WPF绑定代码 TestModel source new TestModel TestModel target new TestModel Bind source target BindingMode OneWay source
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 从 F# 调用 Newtonsoft.Json 出现意外结果

    我没有从该 F 代码中获得预期结果 我希望 t 包含调用 JsonSchema Parse json 的结果 但它是空的 我究竟做错了什么 open Newtonsoft Json open Newtonsoft Json Schema l
  • 基于另一个组合框的所选项目绑定组合框 - MVVM WPF

    我目前有一个组合框 其中填充了艺术家姓名 一旦选择了艺术家 我需要将其绑定到另一个组合框 在我看来 这些设置如下
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何使用DocumentViewer显示流程文档?

    我的资源中有一个简单的流程文档 FlowDocument1 xaml
  • 不支持 URI 前缀

    我正在尝试使用以下方法加载和播放波形文件 SoundPlayer simpleSound new SoundPlayer pack application MyAssembly component Sounds 10meters wav s
  • 更改 JSON.NET 序列化属性名称的方式

    如何更改 Newtonsoft JSON NET 序列化对象属性名称的方式 有几种方法 You can manually control how it serializes using the JsonTextWriter class ht
  • 关闭主窗口时 WPF 应用程序不会关闭

    我习惯了在 Visual Studio 中进行 WinForms 编程 但我想尝试一下 WPF 我向我的项目添加了另一个窗口 名为 Window01 主窗口称为MainWindow 之前public MainWindow 构造函数我声明Wi
  • 获取 TreeView 中子节点的 SelectedIndex

    我目前正在使用 C 开发一个 wpf 项目 我创建了一个树视图 其中包含父节点和子节点 我想知道是否有办法获取用户单击的子节点的索引 类似于使用组合框时的 SelectedIndex 我尝试过各种方法 例如 int val TreeView

随机推荐

  • 从流中收集连续的对

    给定一个流 例如 0 1 2 3 4 我怎样才能最优雅地将它转换成给定的形式 new Pair 0 1 new Pair 1 2 new Pair 2 3 new Pair 3 4 当然 假设我已经定义了类 Pair Edit 严格来说 这
  • 如何在导航栏 jqgrid 上添加第二个自定义删除按钮?

    我已经在使用默认删除按钮进行自定义操作 在服务器端它在删除之前复制行 我想知道如何创建第二个删除按钮 将删除操作发送到不同的 url 以便在数据库的表上删除 我不想更改当前服务器端代码上的任何内容 只想为从此按钮发送的删除操作创建新代码 我
  • 移动 Rigidbody 游戏对象的正确方法

    我刚刚开始学习Unity 我尝试使用此脚本进行简单的盒子移动 前提是 每当有人按下 w 时 盒子就会向前移动 public class PlayerMover MonoBehaviour public float speed private
  • 单场淘汰赛 - 可能的组合数量

    单场淘汰赛中 8 人参加的组合有多少种 比赛总数为 7 场 但我还需要这组比赛的组合数量 如果玩家在树中的哪个位置开始并不重要 而只关心他 她与哪些对手战斗以及他 她能坚持多久 我们可以说左边的玩家总是获胜 然后只需计算创建的方法数量最下面
  • AzureSearch-从数据源检测索引架构时出错

    我通过 REST API 在 Azure 搜索上创建了一个数据源 我使用 API 而不是门户 因为我有一个尚未在门户上处理的 rowversion 数据类型 我可以在门户上查看数据源 当我尝试将数据源导入索引时 出现以下错误 从数据源检测索
  • gzip.open().read() 的大小参数

    当与gzipPython 中的库 我经常遇到使用 read 函数的模式如下所示 with gzip open filename as bytestream bytestream read 16 buf bytestream read IMA
  • 如何将命名范围添加到 Google apps-script 中的子段落元素

    我想在 Google 文档中实现 类似于 html span 的功能 但是每当我尝试添加NamedRange对于 Google 文档内的文本子字符串 该范围将与同一段落中的先前文本合并 结果 NamedRange适用于整个段落 这是我的测试
  • 如何检查给定值是否是通用列表?

    public bool IsList object value Type type value GetType Check if type is a generic list of any type 检查给定对象是否是列表或可以转换为列表的
  • 关于 System.Linq.Lookup 类

    我在阅读一本 C 书籍时遇到了这个课程 并有一些问题 为什么将其添加到 System Linq 命名空间而不是通常的 Collections 命名空间中 这个类背后的意图是什么 为什么这个类不适合直接实例化 这只能通过 ToLookup 扩
  • 如何根据CPU能力实现渲染器

    我想知道在 JavaScript 中实现渲染器的最佳方法是什么 这里真正重要的并不是渲染的内容部分 我更想知道何时以及如何有效地运行渲染器代码 目前 我有window setInterval renderFunc 1000 20 每 50
  • 如何向 Linq 表达式添加排序规则?

    如何实现 IQuariable 的方法如下 var trash from a in ContextBase db Users orderby a FirstName select a ToCollatedList 我想看到的结果 SELEC
  • 如何根据第一列的内容分割一个巨大的csv文件?

    我有一个 250MB 以上的巨大 csv 文件要上传 文件格式是group id application id reading数据可能看起来像 1 a1 0 1 1 a1 0 2 1 a1 0 4 1 a1 0 3 1 a1 0 0 1 a
  • 当相机断开连接时,opencv videocapture 挂起/冻结而不是返回“False”

    我正在使用 OpenCV Python 3 1 遵循此处的示例代码 http opencv python tutroals readthedocs io en latest py tutorials py gui py video disp
  • Django 应用程序不从 AWS 存储桶的媒体文件夹加载图像

    我在用着django oscar 并希望使用 AWS S3 提供我的静态文件 为了配置我的 s3 存储桶 我创建了一个名为的模块aws with conf py and utils py files 在我的网站上 当我将图像上传到产品时 它
  • 如何在 Elasticsearch NEST 中序列化 JToken 或 JObject 类型的属性?

    我正在将 Elasticsearch 引入 C API 项目 我想利用现有的 API 模型作为搜索文档 其中许多模型允许添加自定义数据点 这些是使用JObject https www newtonsoft com json help htm
  • 如何从xamarin表单应用程序将图像上传到服务器

    我正在尝试使用 post 请求将图像从我的 xamarin 表单应用程序发送到 asp net core 服务器 我需要将图像保存在某个服务器文件夹中 但我做不到 这是我在 mediaFile 中选择图像后发送图像的方法 private a
  • 如何使用 Identity Server 4 颁发基于 Windows 身份验证的访问令牌

    我的目标是保护 Web API 以便客户端只能使用 IS 基于 Windows 身份验证颁发的访问令牌来访问它 我完成了这个基本示例 http docs identityserver io en release quickstarts 1
  • 全局运算符和成员运算符的区别

    定义一个接受类的两个引用的全局运算符和定义一个仅接受正确操作数的成员运算符之间有区别吗 Global class X public int value bool operator X left X right return left val
  • Tensorflow - 保存模型

    我有以下代码 在尝试保存模型时出现错误 我可能做错了什么 我该如何解决这个问题 import tensorflow as tf data labels cifar tools read data C Users abc Desktop Te
  • 如何从 JObject 获取第一个键?

    我在用Newtonsoft Json在我的项目中 我有JObject像这样 4781 Name 1 1577 Name 2 9973 Name 3 我成功解析它JObject Parse 我需要从此 JObject 获取第一个密钥 4781