- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 MVC4/.NET4 WebApi Controller 操作中收到一个 JSON 字符串。该操作的参数是 dynamic
,因为我在接收端对接收到的 JSON 对象一无所知。
public dynamic Post(dynamic myobject)
JSON 被自动解析,生成的 dynamic
对象是 Newtonsoft.Json.Linq.JContainer
。正如预期的那样,我可以在运行时评估属性,因此如果 JSON 包含类似 myobject.myproperty 的内容,那么我现在可以获取接收到的动态对象并在 C# 代码中调用 myobject.myproperty
。到目前为止一切顺利。
现在我想遍历作为 JSON 一部分提供的所有属性,包括嵌套属性。但是,如果我执行 myobject.GetType().GetProperties()
,它只会返回 Newtonsoft.Json.Linq.JContainer
的属性,而不是我正在寻找的属性(那是 JSON 的一部分)。
知道怎么做吗?
最佳答案
我认为这可以作为一个起点
dynamic dynObj = JsonConvert.DeserializeObject("{a:1,b:2}");
//JContainer is the base class
var jObj = (JObject)dynObj;
foreach (JToken token in jObj.Children())
{
if (token is JProperty)
{
var prop = token as JProperty;
Console.WriteLine("{0}={1}", prop.Name, prop.Value);
}
}
编辑
这也可能对你有帮助
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(jObj.ToString());
关于c# - 动态 JContainer (JSON.NET) & 在运行时迭代属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652983/
我有 JFrame 和 BorderLayout: NORTH 和 JButton 中的 JTextArea在南。我在开头pack()它。 我的代码更改了文本区域的字体大小。如何强制对话框窗口及其组件
我无法理解何时使用 JContainer、JObject 和 JToken。我从“标准”中了解到 JObject 由 JProperties 组成,并且 JToken 是所有 JToken 的基本抽象
我在 MVC4/.NET4 WebApi Controller 操作中收到一个 JSON 字符串。该操作的参数是 dynamic,因为我在接收端对接收到的 JSON 对象一无所知。 public d
我想通过这样做添加组件: frame.add(new JButton("点击此处")); 但是我该如何添加一个 ActionListener 呢?我认为这可能与 AbstractButton 实例化有
我是一名优秀的程序员,十分优秀!