如何结合Jarray?

Posted

技术标签:

【中文标题】如何结合Jarray?【英文标题】:How to combine Jarray? 【发布时间】:2022-01-08 07:35:13 【问题描述】:

c# 我要结合Jarray。 每个 Jarray 都有一个共同的 id,一个 Jobject。 我将根据“id”制作一个 json 文件。我该怎么办?

Jarray 1

[
    
        "id" : "222",
        "name" : "second"
    ,
    
        "id" : "111",
        "name" : "first"
    ,
    
        "id" : "333",
        "name" : "third"
    
]

Jarray 2

[
    
        "id" : "111",
        "info" : "one one one"
    ,
    
        "id" : "222",
        "info" : "two two two"
    ,
    
        "id" : "333",
        "info" : "three three three"
    
]

Jarray 3

[
    
        "id" : "333",
        "number" : "3"
        "call" : "three"
    ,
    
        "id" : "222",
        "number" : "2"
        "call" : "two"
    ,
    
        "id" : "111",
        "number" : "1"
        "call" : "one"
    
]

【问题讨论】:

就我个人而言,我从一头扎入深海中获得了很好的学习经验,尽管从更丰富的基础知识开始。尽管如此,我并没有真正看到 OP 的方法有什么问题。就我个人而言,我尽可能避免使用 JArray 和其他 J 类型,但我看不出这个问题有多糟糕。有人认为我们可能会同意,问题的质量不是最好的,但我是来提供帮助的,而不是阻止寻求帮助的人再次提问。 【参考方案1】:

拥有所有属性的类:

class NameInfoNumberCall

    internal string ID  get; set; 
    internal string Name  get; set; 
    internal string Info  get; set; 
    internal string Number  get; set; 
    internal string Call  get; set; 
    

基于 JArray 填充对象的代码。只需遍历所有项目,访问属性并将其存储在对象中:

static void Main()

    var jarray1 = JArray.Parse("[\"id\":\"222\",\"name\":\"second\",\"id\":\"111\",\"name\":\"first\",\"id\":\"333\",\"name\":\"third\"]");
    var jarray2 = JArray.Parse("[\"id\":\"111\",\"info\":\"oneoneone\",\"id\":\"222\",\"info\":\"twotwotwo\",\"id\":\"333\",\"info\":\"threethreethree\"]");
    var jarray3 = JArray.Parse("[\"id\":\"333\",\"number\":\"3\",\"call\":\"three\",\"id\":\"222\",\"number\":\"2\",\"call\":\"two\",\"id\":\"111\",\"number\":\"1\",\"call\":\"one\"]");

    var infos = new Dictionary<string, NameInfoNumberCall>();
    foreach (JObject o in jarray1)
    
        var info = new NameInfoNumberCall();
        info.ID = (string)o["id"];
        info.Name = (string)o["name"];
        infos.Add(info.ID, info);
    

    foreach (JObject o in jarray2)
    
        infos[(string)o["id"]].Info = (string)o["info"];
    

    foreach (JObject o in jarray3)
    
        infos[(string)o["id"]].Number = (string)o["number"];
        infos[(string)o["id"]].Call = (string)o["call"];
    

    // do something with the data

【讨论】:

你我的英雄你我的天使你我的一切......谢谢你先生我的爱 @ggumini:如果此答案解决了您的问题,您可以使用复选标记将其标记为已接受的答案。其他人就会知道不需要更多的帮助。

以上是关于如何结合Jarray?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 JArray 解析为字符串集合

如何将 JArray 的所有元素添加到 C# 中的 JObject?

如何访问 JArray 的元素(或迭代它们)

如何在不添加新 JObject 键/名称的情况下将 JArray 添加到 JObject 中?

在 JArray 中使用 LINQ

我想将c#列表转换为JArray