【问题标题】:How to combine Jarray?如何结合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 类型,但我看不出这个问题有多糟糕。有人认为我们可能会同意,问题的质量不是最好的,但我是来提供帮助的,而不是阻止寻求帮助的人再次提问。

标签: c# arrays json


【解决方案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:如果此答案解决了您的问题,您可以使用复选标记将其标记为已接受的答案。其他人就会知道不需要更多的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2014-08-11
  • 2020-11-12
  • 1970-01-01
相关资源
最近更新 更多