c# - 在 C# 中返回对象的 JSON 数组

标签 c# asp.net arrays json asp.net-core

这些是我拥有的类,它们代表了我希望向最终用户显示数据的方式:

    namespace PHCTimeSeriesInsights.API.Models
{
    public class ProductTimeSeries
    {
        public List<DeviceTimeSeries> DeviceTimeSeries { get; set; }
        public string DeviceId { get; set; }
    }

    public class DeviceTimeSeries
    {
        public DateTime TimeStamp { get; set; }
        public Double MeasuredValue { get; set; }
        public string DateField { get; set; }


    }
}

我想要以下格式的输出:这里的字符串 8787887 是一个设备的实际值;

{
        "8787887":[ 
        {
        "prop":"val", 
        "prop":"val"
        },
       {
       "prop":"val1", 
       "prop":"val2"
}
    ]
    }

我有这个片段代表我所做的,但它没有给我一个最佳格式:

List<ProductTimeSeries> prd = new List<ProductTimeSeries>();
            prd.Add(new ProductTimeSeries
            {
                DeviceId = getTelemetry.PropertyName,
                DeviceTimeSeries = deviceIdTimeSeries
            });

这是我得到的结果:

[
    {
        "deviceTimeSeries": [
            {
                "timeStamp": "2019-07-19T17:44:55.856Z",
                "measuredValue": 6.98,
                "dateField": "7/19/2019"
            },
            {
                "timeStamp": "2019-07-19T17:45:58.697Z",
                "measuredValue": 7.04,
                "dateField": "7/19/2019"
            }
        ],
        "deviceId": "deviceId"
    }
]

我必须按照我想要的方式对格式进行哪些更改?

最佳答案

在 C# 中,您不希望使用类,而是希望实际使用字典。在你的情况下,它应该通过使用 Dictionary<string, List<DeviceTimeSeries>> 来工作。 string在哪里是您的“DeviceId”。

请参阅下面的示例。

https://dotnetfiddle.net/luE1Z4

哪个排序运行

Console.WriteLine("Dictionary Test");
var productTimeSeries2 = new Dictionary<string, IList<DeviceTimeSeries>> () {
    {
        "DeviceId-888",
        new List < DeviceTimeSeries > () {
            new Program.DeviceTimeSeries() {
                TimeStamp = DateTime.Now,
                MeasuredValue = 2,
                DateField = "7/29/2019"
            }
        }
    }
};
Console.WriteLine(JsonConvert.SerializeObject(productTimeSeries2));

和输出

{  
   "DeviceId-888":[  
      {  
         "TimeStamp":"2019-07-31T20:45:28.677905+00:00",
         "MeasuredValue":2.0,
         "DateField":"7/29/2019"
      }
   ]
}

关于c# - 在 C# 中返回对象的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298464/

相关文章:

asp.net - 使用 JavaScript 访问 ASP.net session 数据的最佳方法是什么?

c# - 如何检查 DataView.RowFilter 中的空白

arrays - flatMap 中的 "Cannot convert return expression"里面有一个无意义的表达式

C++ 并行数组是定义的结构吗

c# - 使用 Entity Framework 作为对象读取的 sql_variant 无法转换为其实际类型

c# - 带冒号的 HttpRequestMessage UserAgent

javascript - 如何在javascript中创建一个列表

c# - 异步/等待未保留同步上下文?

c# - 为什么我的更新面板会生成数百个脚本 block ?

javascript - Codeigniter上传带有数组字段名称的图像文件