根据关键尾随数将json数据分组到列表中

时间:2017-06-28 06:50:17

标签: c# json

我得到了json结果,如图1所示,但我需要输出图像2 enter image description hereenter image description here

我参加了以下课程

public class NameDTO
        {
            public string Name;
        }

        public class ValDTO
        {
            public string Val;
        }

我将列表添加到上面的类中,如图3和图4所示,并将它们组合并转换为json。 enter image description here

enter image description here

var combined1 = _nameDetials1.Zip(_valDetials1, (name1, val1) => new { name1.Name, val1.Val })                                               .ToDictionary(k => k.Name, k => k.Val);

var jsonSerialiser1 = new JavaScriptSerializer();
var json1 = jsonSerialiser1.Serialize(combined1);

如何进行分组,以便我可以得到正确的输出,如image2

所示

感谢。

1 个答案:

答案 0 :(得分:0)

如果可以,您可以使用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());

Json Ouput是这样的:

[
  {
    "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"
  }
]