【问题标题】:Json.Net, how to create json dynamically by path?Json.Net,如何通过路径动态创建json?
【发布时间】:2017-05-20 02:35:30
【问题描述】:

我是 Json.net 的新手,所以我不确定我这样做是否正确/最好,但我无法弄清楚:

我正在创建一个输出 JObject:

JObject joOutput = new JObject();

现在,我有一个值的路径列表:

a.b.c = 5
a.b.d = 7
a.c.q = 8

所以我想使用该层次结构以明显的方式填充 joOutput 对象。

我似乎找不到通过路径设置值的方法,如果路径不存在,显然会沿途创建路径。

我正在尝试拆分 .'s 上的路径并创建节点,但我什至无法做到这一点,因为 api 非常混乱。

你能指出我正确的方向吗?

谢谢!

【问题讨论】:

  • 你打算用joObject做什么,因为a不能做?
  • @JamesCurran 有什么?
  • 与对象a;

标签: c#


【解决方案1】:
string a = @"{""b"": {""c"":5, ""d"":7}, ""c"": {""q"":8}}";
JObject joObject = JObject.Parse(a);

更新:

var B = new JObject();
B.Add("c", 5);
B.Add("d", 7);

var C = new JObject();
C.Add("q", 8);


JObject A = new JObject();
A.Add("b", B);
A.Add("c", C);

UPDATE2,为了完整起见,这里是弗拉基米尔的方法:

var B = new Dictionary<string, int> { ["c"] = 5, ["d"] = 7 };
var C = new Dictionary<string, int> { ["q"] = 5, ["8"] = 7 };
var A = new Dictionary<string, object> { ["b"] = B, ["c"] = C };

var AA = JObject.FromObject(A);

【讨论】:

  • 我需要动态创建它,这只是一个示例集。下次运行时可能是 a.q.z。我只是得到一个路径列表,我需要从中创建 json。
  • @SledgeHammer 你确实意识到你可以按照你的意愿把那个字符串放在一起,对吧?
  • @ManfredRadlwimmer,重点是使用 API 而不是自己创建字符串。
  • 啊,我知道问题出在哪里了...我错误地使用了 JObject。我假设名称是对象的属性,而不是。谢谢。
【解决方案2】:

尝试使用带有字符串键和对象值的字典来解决您的问题。

Dictionary<string,object> myJsonObj = new Dictionary<string, object>;

里面的每个元素也可以是同一个字典。

【讨论】:

  • myJsonObj.Add("subElement", new Dictionary); myJsonObj["subElement"].Add("subsubElement", 1);
  • 序列化后为 {"subElement" : { "subsubElement" : 1 } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2019-04-12
  • 2023-03-16
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多