递归反序列化JSON对象

编程入门 行业动态 更新时间:2024-10-26 02:37:52
本文介绍了递归反序列化JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个递归JSON对象这样表示查询表达式:

I have a recursive JSON object like this representing a query expression:

{ "where": { "operator": "AND", "left": { "operator": "=", "$fieldRef": "requestor", "value": "@me" }, "right": { "operator": "=", "$fieldRef": "state", "value": "Closed" } } }

更多的对象可以出现在JSON层次为好。这里是一个更复杂的例子:

More objects can appear in the JSON hierarchy as well. Here is a more complex example:

{ "where": { "operator": "OR", "left": { "operator": "=", "$fieldRef": "id", "value": "1234" }, "right": { "operator": "OR", "left": { "operator": "=", "$fieldRef": "orgId", "value": "6757" }, "right": { "operator": "AND", "left": { "operator": "STARTSWITH", "$fieldRef": "firstname", "value": "D" }, "right": { "operator": "=", "$fieldRef": "state", "value": "Closed" } } } } }

我想能够为这个JSON反序列化到一些类,更新数据,然后后来序列化回JSON。我怎样才能做到这一点使用Json.NET?

I would like to be able to deserialize this JSON into some classes, update the data and then later serialize back to JSON. How can I do this using Json.NET?

推荐答案

这样定义类:

class Query { [JsonProperty("where")] public Clause Where { get; set; } } class Clause { [JsonProperty("operator")] public string Operator { get; set; } [JsonProperty("left")] public Clause Left { get; set; } [JsonProperty("right")] public Clause Right { get; set; } [JsonProperty("$fieldref")] public string FieldRef { get; set; } [JsonProperty("value")] public string Value { get; set; } }

然后就可以反序列化是这样的:

Then you can deserialize like this:

Query q = JsonConvert.DeserializeObject<Query>(json);

您可以序列化回JSON是这样的:

You can serialize back to JSON like this:

JsonSerializerSettings settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented }; json = JsonConvert.SerializeObject(q, settings);

下面是一个简单的例子:的 dotnetfiddle/qqAj2v

Here is a simple demonstration: dotnetfiddle/qqAj2v

更多推荐

递归反序列化JSON对象

本文发布于:2023-11-26 17:32:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1634520.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   对象   序列化   JSON

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!