C# 根据键尾号将json数据分组到列表中

C# 根据键尾号将json数据分组到列表中,c#,json,C#,Json,我得到了一个json结果,如图1所示,但我需要一个输出,如图2所示。 我参加了以下课程 public class NameDTO { public string Name; } public class ValDTO { public string Val; } 我得到了上述类的列表,如图3和图4所示,并将它们合并并转换为json。 如何进行分组,以便获得正确

我得到了一个json结果,如图1所示,但我需要一个输出,如图2所示。

我参加了以下课程

public class NameDTO
        {
            public string Name;
        }

        public class ValDTO
        {
            public string Val;
        }
我得到了上述类的列表,如图3和图4所示,并将它们合并并转换为json。

如何进行分组,以便获得正确的输出,如图2所示


谢谢。

如果可能,您可以使用Json.NET。 这里有一个例子来解决你的问题

const string JSON = @"{
    ""message-Code-1"": ""000"",
    ""msg-Number-Pos1-1"": ""0000"",
    ""msg-Number-Pos2-1"": ""1"",
    ""msg-Number-Pos3-1"": ""1"",
    ""message-Code-2"": ""1"",
    ""msg-Number-Pos1-2"": ""0001"",
    ""msg-Number-Pos2-2"": ""2"",
    ""msg-Number-Pos3-2"": ""1"",
    ""message-Code-3"": ""0002"",
    ""msg-Number-Pos1-3"": ""3"",
    ""msg-Number-Pos2-3"": ""1"",
    ""msg-Number-Pos3-3"": ""1"",
    ""message-Code-4"": ""0003"",
    ""msg-Number-Pos1-4"": ""3"",
    ""msg-Number-Pos2-4"": ""1"",
    ""msg-Number-Pos3-4"": ""1""
}";

JObject loMessages = JObject.Parse(JSON);
JArray loMessageArray = new JArray();
JObject loAddMessage;
foreach (var loMessageGroup in loMessages.Properties().GroupBy(item => Regex.Match(item.Name,@".*-(?<pos>\d+)").Groups["pos"].Value))
{
    loAddMessage = new JObject();
    foreach (var loMessage in loMessageGroup)
        loAddMessage[loMessage.Name] = loMessage.Value.ToString();
    loMessageArray.Add(loAddMessage);
}
Console.WriteLine(loMessageArray.ToString());

您显示的代码片段都不是C,因此我将语言标记更改为C#(我假设您正在使用)。请在以后的问题中使用正确的标签。是。。我用的是c#。我错漏了。我会确保的。谢谢。这可能不起作用,因为我必须再次在您的上下文中重新构建我的字符串,即conststringjson。
const string JSON = @"{
    ""message-Code-1"": ""000"",
    ""msg-Number-Pos1-1"": ""0000"",
    ""msg-Number-Pos2-1"": ""1"",
    ""msg-Number-Pos3-1"": ""1"",
    ""message-Code-2"": ""1"",
    ""msg-Number-Pos1-2"": ""0001"",
    ""msg-Number-Pos2-2"": ""2"",
    ""msg-Number-Pos3-2"": ""1"",
    ""message-Code-3"": ""0002"",
    ""msg-Number-Pos1-3"": ""3"",
    ""msg-Number-Pos2-3"": ""1"",
    ""msg-Number-Pos3-3"": ""1"",
    ""message-Code-4"": ""0003"",
    ""msg-Number-Pos1-4"": ""3"",
    ""msg-Number-Pos2-4"": ""1"",
    ""msg-Number-Pos3-4"": ""1""
}";

JObject loMessages = JObject.Parse(JSON);
JArray loMessageArray = new JArray();
JObject loAddMessage;
foreach (var loMessageGroup in loMessages.Properties().GroupBy(item => Regex.Match(item.Name,@".*-(?<pos>\d+)").Groups["pos"].Value))
{
    loAddMessage = new JObject();
    foreach (var loMessage in loMessageGroup)
        loAddMessage[loMessage.Name] = loMessage.Value.ToString();
    loMessageArray.Add(loAddMessage);
}
Console.WriteLine(loMessageArray.ToString());
[
  {
    "message-Code-1": "000",
    "msg-Number-Pos1-1": "0000",
    "msg-Number-Pos2-1": "1",
    "msg-Number-Pos3-1": "1"
  },
  {
    "message-Code-2": "1",
    "msg-Number-Pos1-2": "0001",
    "msg-Number-Pos2-2": "2",
    "msg-Number-Pos3-2": "1"
  },
  {
    "message-Code-3": "0002",
    "msg-Number-Pos1-3": "3",
    "msg-Number-Pos2-3": "1",
    "msg-Number-Pos3-3": "1"
  },
  {
    "message-Code-4": "0003",
    "msg-Number-Pos1-4": "3",
    "msg-Number-Pos2-4": "1",
    "msg-Number-Pos3-4": "1"
  }
]