如何为类分配值并创建json

我试图将值分配给一个类以构建JSON字符串。目标是生成如下所示的内容。

    {
    "ProductType" : "Spotlight_Comp","SimulatedData" : [ 
            {
                "value" : 1819.00923045901,"units" : "hp","tag" : "comp/totalIhp","name" : "Compressor - Total IHP"
            },{
                "value" : 789.294125,"units" : "RPM","tag" : "comp/averageSpeed","name" : "Compressor - Speed"
            },{
                "value" : 2064.74658240481,"tag" : "comp/totalBhp","name" : "Compressor - Total BHP"
            }
    ]
}

但是我在找出正确的语法来为SimulatedData键创建对象数组时遇到了问题。下面是我的代码。我尝试了各种不同的语法,但尚未实现解决方案。

public static void CreateJson(string productType,string units,string simTag,string name,string value)
        {
            Simulator.Root data = new Simulator.Root
            {
                ProductType = productType,SimulatedData =
                {

                }  
                //SimulatedData = new SimulatedData { value = value,units = units,tag = simTag,name = name }
            };

            string jsonOutput = JsonConvert.SerializeObject(data,Formatting.Indented);
            Console.WriteLine(jsonOutput);
        }

用于在下面构建JSON的类的代码

      public class Root
        {
            public string ProductType { get; set; }
            public SimulatedData[] SimulatedData { get; set; }
        }

        public class SimulatedData
        {
            public string tag { get; set; }
            public string value { get; set; }
            public string units { get; set; }
            public string name { get; set; }
        }

    }
}

我确信我的班级结构使我无法接受。但这是我目前认为最好的方法。我有一个预感,问题是拥有一个名为SimulatedData的类,然后在Root中拥有SimulatedData[]的属性。

totomy 回答:如何为类分配值并创建json

如果您有一个对象,那么以下应该起作用。

Simulator.Root data = new Simulator.Root
{
    ProductType = productType,SimulatedData = new []{new SimulatedData { value = value,units = units,tag = simTag,name = name }}
};    

对于多个对象,只需创建一个列表或数组并将其分配给SimulatedData属性:

var l = new List<SimulatedData>();

l.Add(...);
l.Add(...);
l.Add(...);

Simulator.Root data = new Simulator.Root
{
    ProductType = productType,SimulatedData = l.ToArray()
};    

您还可以更改Root以保留列表,而不是数组。

public List<SimulatedData> SimulatedData { get; set; }
本文链接:https://www.f2er.com/3098973.html

大家都在问