当前位置: 首页 > 知识库问答 >
问题:

将数组添加到更高维度的数组

谭修然
2023-03-14

我正在创建一个从网站获取信息和下载电影的应用程序。我成功地将信息设置在不同的数组中,并将它们组合到一个数组中。

然而,现在我试图把这个数组放在一个更大的数组中(想使用JSON),但失败了。

我当前的Json输出如下所示:

 {"moviedata": 
    ["http:/xxxx","title title ","k0X0HrYtMm5u"],"tags": 
    ["x","x","x","Prop","x","x","x","x","x","x","x"],"categorydata": 
    ["x","x","x"]}

这是通过以下代码实现的:

Dictionary<string, string[]> movie = new Dictionary<string, string[]>();

moviedata.Add("moviedata", moviegenerala);
moviedata.Add("tags", tagsa);
moviedata.Add("categorydata", categoriesa);
string moviejson = JsonConvert.SerializeObject(moviedata);

我想在此之上添加另一个层,所以有一个名为“电影”的通用标签,对于每一部电影都有这个信息。我该怎么做呢?

更新:添加了以下代码:

var myShape = new
    {
        Movie = new Dictionary<string, string[]>
        {
            ["moviedata"] = moviegenerala,
            ["tags"] = tagsa,
            ["categorydata"] = categoriesa,
            ["localdata"] = localdataa
        }
    };
    var moviejson = JsonConvert.SerializeObject(myShape);

JSON似乎是正确的,但它无法解析,在第一个列表后,它表示在结束括号后有文本。

更新:将代码更改为:

Dictionary<string, string[]> movies = new Dictionary<string, string[]>();
                                var myShape = movies.Select(m => new
                                {
                                    Movie = new Dictionary<string, string[]>
                                    {
                                        // TODO - you'll need to get the appropriate data for this movie
                                        ["moviedata"] = moviegenerala,
                                        ["tags"] = tagsa,
                                        ["categorydata"] = categoriesa,
                                        ["localdata"] = localdataa
                                    }

                                });

                                var moviejson = JsonConvert.SerializeObject(myShape);
                                File.AppendAllText("moviedata.txt", moviejson);

但现在它只给空括号:(

共有1个答案

冷善
2023-03-14

如果这是一次性序列化,那么最简单的方法就是用匿名类包装字典,添加额外的属性缩进,例如。

var myShape = new 
{
     Movie = new Dictionary<string, string[]>
     {
         ["moviedata"] = moviegenerala,
         ["tags"] = tagsa,
         ["categorydata"] = categoriesa
     }
};
var moviejson = JsonConvert.SerializeObject(myShape);

但是,如果在代码的多处需要相同的形状,那么我建议您为您的“形状”创建一个成熟的类。

编辑:

上述方法生成的json是

{
  "Movie": {
    "moviedata": [ "http:/xxxx", "title title ", "k0X0HrYtMm5u" ],
    "tags": [ "x", "x", "x", "Prop", "x", "x", "x", "x", "x", "x", "x" ],
    "categorydata": [ "x", "x", "x" ]
  }
}

如果需要映射多部电影,则可以使用。选择

// TODO : Replace this with your actual current movies
var inMovies = new[] {new Movie{...},new Movie {...}, ...};
var myShape = inMovies.Select(m => new
{
    Movie = new Dictionary<string, string[]>
    {
        // TODO - you'll need to get the appropriate data for this movie, e.g. m.moviegenerala
        ["moviedata"] = moviegenerala, 
        ...
    }
});

产生以下结果:

[
  {
    "Movie": {
      "moviedata": [ "http:/xxxx", "title title ", "k0X0HrYtMm5u" ],
      "tags": [ "x", "x", "x", "Prop", "x", "x", "x", "x", "x", "x", "x" ],
      "categorydata": [ "x", "x", "x" ]
    }
  },
  {
    "Movie": {
      "moviedata": [ "http:/xxxx", "title title ", "k0X0HrYtMm5u" ],
      "tags": [ "x", "x", "x", "Prop", "x", "x", "x", "x", "x", "x", "x" ],
      "categorydata": [ "x", "x", "x" ]
    }
  }
]
 类似资料:
  • 本文向大家介绍Numpy将二维数组添加到空数组的实现,包括了Numpy将二维数组添加到空数组的实现的使用技巧和注意事项,需要的朋友参考一下 使用append函数将一个二维数组添加到一个空数组,关键是维度要对的上 以上这篇Numpy将二维数组添加到空数组的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我试图将一个数组的值添加到一个已经存在的数组中,该数组已经有一个值。我的方法是创建一个新的数组,其长度为已有数组的长度+我要添加的值的长度。然后,我只需循环整个数组,并将值添加到新数组的索引中。我的方法如下所示: null 我想不出解决办法

  • 问题内容: 如何将行添加到numpy数组? 我有一个数组A: 如果X中每行的第一个元素满足特定条件,我希望从另一个数组X向该数组添加行。 Numpy数组没有像列表那样的“追加”方法,或者看起来。 如果A和X是列表,我只会这样做: 是否有 numpythonic的 方法可以做到这一点? 谢谢,S ;-) 问题答案: 什么啊 如果它是一个二维数组,你怎么能那么其行比作一个号码:? OP评论后编辑: 从

  • 在有趣的功能中,当我将列表添加到其他列表时,它正在添加空列表,我可以找到原因有人可以帮助我这个程序是关于查找给定数组的不同组合

  • 问题内容: 我有一个具有形状的数组,以及一个具有形状的数组。 如何将这两个形状附加为一个数组? 我试过了,但它没有保持尺寸,而该选项导致。 问题答案: 用途: 这可以处理数组具有不同维数的情况,并沿第三轴堆叠数组。 否则,要使用或,您必须自己制作三维尺寸并指定要在其上连接的轴:

  • 我想在Sokoban游戏中保存我的玩家角色的步骤。首先我想用字符的实际位置填充一个int x和y的数组,称为“pos”。然后我想将这个数组添加到数组的ArrayList中,称为“moves”。 一个玩家位置的阵列: ArrayList为所有步骤,玩家在关卡: 如果将“int[]”放在ArrayList的尖括号内,则会出错。 如何将阵列位置添加到ArrayList移动?