当前位置: 首页 > 面试题库 >

如何将JSON.Net中的JObject转换为T

齐朝明
2023-03-14
问题内容

我知道我可以使用JsonConvert.DeserializeObject<T>(string),但是,我需要窥视对象的_type(可能不是第一个参数),以确定要转换的特定类。本质上,我想做的是这样的:

//Generic JSON processor for an API Client.
function MyBaseType ProcessJson(string jsonText)
{
  var obj = JObject.Parse(jsonText);
  switch (obj.Property("_type").Value.ToString()) {
    case "sometype":
      return obj.RootValue<MyConcreteType>();
      //NOTE: this doesn't work... 
      // return obj.Root.Value<MyConcreteType>();
    ...
  }
}
...

// my usage...
var obj = ProcessJson(jsonText);
var instance = obj as MyConcreteType;
if (instance == null) throw new MyBaseError(obj);

问题答案:

首先将JSON解析为JObject。然后_type使用LINQ to JSON 查找属性。然后根据值切换并使用进行强制转换ToObject<T>

var o = JObject.Parse(text);
var jsonType = (String)o["_type"];

switch(jsonType) {
    case "something": return o.ToObject<Type>();
    ...
}


 类似资料:
  • 问题内容: 我正在使用Java本机功能- 在C ++中,我的本机函数- 我的问题是如何将resultList(向量类型)转换为jobject类型? 问题答案: 您必须在C ++中为ArrayList创建包装器。就像是: 有关更多信息,请参见: http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html

  • 问题内容: 到目前为止,这就是我所拥有的:我传递一个具有2个字段的对象:String和Integer作为参数,并且我想发送信息以在C部分中对其进行处理,这在当时并不重要…我抱怨在jstring声明 我想念什么? 问题答案: ……然后一切正常。

  • 问题内容: 我将数据表转换为C#通用列表。 现在如何使用json.net 将其转换为json?任何建议。 json格式的样本应该像这样, 问题答案: 这是一个例子: 文档: 使用Json.NET的LINQ to JSON

  • 问题内容: 我有一个Web API方法,可以将任意json有效内容接受到属性中。因此,我不知道会发生什么,但是我仍然需要将其转换为.NET类型。我想拥有一个以便可以按我想要的任何方式处理它。 我进行了很多搜索,但找不到任何东西,最终启动了一个麻烦的方法来进行此转换,一个键一个键,一个值一个值。有简单的方法吗? 输入-> 谢谢! 问题答案: 我最终使用了两个答案的混合,因为没有一个真正地钉住它。 T

  • 我有以下代码来返回对象数组,对象数组中填充了基元类型的结构元素,我不知道如何将基元类型转换为jobject,然后使用SetObjectArrayElement方法设置为ObjectArray, 下面是我的C结构信息 我的JNI代码 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited” 包含更多信息的错误报告文件保存为:/data1

  • 问题内容: 我正在尝试为Json.NET创建一个自定义ValueProvider,它将跳过序列化所有对象的过程,并将仅返回Guid类型的属性来表示其主键(作为参考)。 例: 应成为: 这是我到目前为止编写的代码。我非常接近使其工作,但是就我而言,我似乎无法获取对象值。我怎样才能做到这一点? 问题答案: 您希望将值从嵌套对象内部提升到父对象。为此,您需要将两个价值提供者链接在一起: 一个外部值提供者