【问题标题】:How do you split a string into a multidimensionnal array?如何将字符串拆分为多维数组?
【发布时间】:2013-04-10 17:08:51
【问题描述】:

几周前我开始使用 C# 进行工作,我正在尝试从大量数据中提取一些信息,这些数据实际上是通过 GET/POST http 请求收集的。

到目前为止,我对整体没有任何问题,但我现在正在努力解决这个困难,我相信在你看来这似乎很荒谬。这就是我向你走来的原因,不用担心,我曾试图研究它但没有成功。

这是我的清单

[{"id":"28",
"name":"Whitechapel Station",
"logo":"gfx\/whitechapel_station\/whitechapel_station_logo.gif",
"x":"85129",
"y":"36575",
"extentsX1":"0",
"extentsX2":"0",
"extentsY1":"0",
"extentsY2":"0",
"zoomlevel":"4",
"code":"PRJ",
"asset_type":"fixed",
"symbol":"project"}

,{"id":"46",
"name":"Connaught Tunnel",
"logo":"gfx\/connaught_tunnel\/connaught_tunnel_logo.",
"x":"91668",
"y":"35238",
"extentsX1":"0",
"extentsX2":"0",
"extentsY1":"0",
"extentsY2":"0",
"zoomlevel":"4",
"code":"PRJ",
"asset_type":"fixed",
"symbol":"project"}
]

我的想法实际上是只提取每束大 { } 的“id”和“name”。你有什么想法吗?

朋友们加油。

克莱门特

编辑:代码不像通常这样。它只是一条没有回报的大直线,如下所示。

[{"id":"28","name":"Whitechapel Station","logo":"gfx\/whitechapel_station\/whitechapel_station_logo.gif","x":"85129","y":"36575","extentsX1":"0","extentsX2":"0","extentsY1":"0","extentsY2":"0","zoomlevel":"4","code":"PRJ","asset_type":"fixed","symbol":"project"},{"id":"46","name":"Connaught Tunnel","logo":"gfx\/connaught_tunnel\/connaught_tunnel_logo.","x":"91668","y":"35238","extentsX1":"0","extentsX2":"0","extentsY1":"0","extentsY2":"0","zoomlevel":"4","code":"PRJ","asset_type":"fixed","symbol":"project"}]

【问题讨论】:

  • 这看起来像 JSON.Net 的东西。将字符串反序列化为字典数组。
  • 多维数组?你不需要它..你可以简单地拥有一个具有名称,id属性的对象列表
  • 绝对按照@JeremyHolovacs 的建议去做。数据 JSON,使用 JSON 解析器来提取您需要的内容。

标签: c# arrays string split multidimensional-array


【解决方案1】:

您发布的示例采用JSON 格式。为了反序列化 JSOn 字符串,你应该使用像JSON.NET 这样的工具。

首先,创建一个与您要反序列化的属性相匹配的 c# 对象:

public class MyObject
{
    public int id { get; set; }
    public string name { get; set; }
}

然后,反序列化:

var myObjects = JsonConvert.DeserializeObject<List<MyObject>>(theString);

然后,您可以使用这些值:

int id = myObjects[0].id;
string name = myObjects[0].name;

【讨论】:

  • 这不是比它必须的更复杂吗?为什么要创建一个对象而不是键值对字典?
  • @JeremyHolovacs 由于 OP 提到了几个来源,我假设每个来源的 JSON 都会发生变化,这似乎是定义数据然后使用它的最佳方式。但是,您可以反序列化为多种形式(包括动态形式)。
  • 这就是我的意思...你会为每个排列创建一个类吗? OP 唯一想要的是这些的 ID 和 Name 值。
  • @JeremyHolovacs 使用 Json.NET,如果您不使用这些属性,那么就不会反序列化。因此,无需从 json 字符串创建所有属性。您只需要一个 ID 和名称。
  • 感谢您的所有回答。尽管如此,如果我下载 JSON 包,这是否意味着我必须让我的用户也下载它才能使用我正在制作的软件?我真的想让我的程序尽可能便携。干杯!
【解决方案2】:

好的,基本上我犯了一个严重的错误。 我在每个 [ 或 ] 和 { 或 } 之间添加了字符 "。 解决了!

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2022-01-05
    • 2022-01-02
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多