创建包含其他对象的array []的对象

时间:2017-09-21 07:03:32

标签: c# json

我想收到一个像这样的json对象:

  "datasets": [{
                "label": "# of Votes",
                "data": [20, 10, 3],
                "backgroundColor": [
                         "#ccf9d6",
                         "#ccf9d6",
                         "#ccf9d6"
                               ],
                 "borderWidth": 1
           }]

但在序列化之前,我必须创建对象,我不知道它应该在后面的代码中查看对象。我有类似的东西,但这是错的。

datasets = new ChartDatasets[4]
                 {
                     label = "# of Votes",
                     data = new int[3] { 20, 10, 3 },
                     backgroundColor = new string[3] { "#ccf9d6", "#ccf9d6", "#ccf9d6" },
                     borderWidth = 1
                 }

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:5)

虽然您创建的类型ChartDatasets的数组可能最多可容纳该类型的四个实例,但您不需要创建此类型的实例 。你需要这个:

datasets = new ChartDatasets[4] {
               new ChartDatasets {
                   label = "# of Votes",
                   data = new int[3] { 20, 10, 3 },
                   backgroundColor = new string[3] { "#ccf9d6", "#ccf9d6", "#ccf9d6" },
                   borderWidth = 1
               }
           }

但是,您也可以省略维度甚至数组类型,因为编译器会尝试自动推断出正确的类型:

datasets = new [] {
               new ChartDatasets {
                   label = "# of Votes",
                   data = new [] { 20, 10, 3 },
                   backgroundColor = new [] { "#ccf9d6", "#ccf9d6", "#ccf9d6" },
                   borderWidth = 1
               }
           }

作为一个aisde,你应该考虑以单数形式命名你的类型的实例,除非它们真的代表某种类型的集合。在您的情况下,您有一个类型为CharDataset的实例的数组(肯定是一个集合)。

答案 1 :(得分:2)

有一个neat website可以将JSON转换为漂亮的C#代码。你的问题被标记为C#,所以我猜你想要的是什么。

它为您的代码输出:

from Tkinter import *
import os; import obspy
class MyGui:
    def __init__(self, master):
        self.master = master
        master = Frame(root)
        master.pack(side='top')
    ##### Input One
        self.one_txt = Label(master, text='Input One')
        self.one_txt.pack(side='top')
        self.one = StringVar()
        self.one.set('1349860')
        self.one_entry = Entry(master, width=10, textvariable=self.one, justify=CENTER, relief=RAISED, background='yellow',font=("bold") );
        self.one_entry.pack(side='top')
    ##### Input Two
        self.two_text = Label(master,text='two')
        self.two_text.pack(side='top')
        self.two = StringVar()
        self.two.set('abcde')
        self.two_entry = Entry(master, width=10, textvariable=self.two, justify=CENTER, relief=RAISED, font=("bold"));
        self.two_entry.pack(side='top') 
  ## Define a function for the button callback
        self.one4bash = self.one.get(); self.two4bash = self.two.get()
        def script4bash(self):
            os.system("bash script1.sh %s %s" % (self.one4bash, self.two4bash))
        self.runBash = Button(master, text='Run', command=self.one4bash)
        self.runBash.pack(side='top')
root = Tk()
root.title("Event Discrimination Window")
mygui = MyGui(root)
root.geometry("500x400")
root.mainloop()

至于创建一个包含其他对象数组的对象,我建议使用上面代码中的方法,其中有一个类列表,每个类都有许多对象