2014-10-18 184 views
0

这是我对成绩册计划工作的延续。我一直在发布与JSON相关的问题,并将两个应用程序连接到StackOverflow,因为我一直在那个部分遇到了非常困难的时间。JSON对象数组的动态创建

我一直在尝试创建一个使用JSON的HTTP POST请求,用于将信息从Java成绩簿应用程序发送到基于网络的Rails应用程序,这些应用程序以报告形式向学生显示这些成绩。

最终,我想发送的不仅仅是一个学生的信息。此外,每个学生可能有0到50个任务,任务说明以及这些任务的成绩。最重要的是,将会有多个班级/学生的课程。所有这些信息都需要被“读入”JSON对象。有没有人有任何关于我如何修改此代码的建议,以便我可以发送所有数据? 我能够采取JSON相关部分的代码最远,如下所示。但是,该代码需要根据以下问题进行修改。 1.如何动态创建JSON对象的数组,而不是如何在下面显示(因为课程,学生和成绩会有所不同并可从Java程序读入)? 2.如何合成/合并下面的三个JSON数组以使其工作?我的想法是,我编写课程对象数组,然后以某种方式嵌入学生对象数组作为每个课程对象的一部分,然后以某种方式嵌入作为每个学生对象一部分的成绩对象数组。

{‘JSONArrayOfCourseObjects’ : [{‘courseID’ : ‘Botany101FallSemester’, ‘courseInstructor’ : 
    ‘Mr. Smith’}, {‘courseID’ : ‘Physics101FallSemester’, ‘courseInstructor’ : ‘Mrs. Newton}, 
    etc.]} 

{‘JSONArrayOfStudentObjects’ : [{‘Name’ : ‘John Doe’, ‘StudentID’ : ‘12345678’, ‘Address’ : 
    ‘1234 Main Street’}, {‘Name’ : ‘Don Corleone’, ‘StudentID’ : ‘87654321’, ‘Address’ : 
    ‘121 Walberry Ave’}, etc.]} 

{‘JSONArrayOfGradeObjects’ : [{‘nameOfAssignment’ : ‘Irrigation Homework 1’, 
    ‘dateOfAssignment’ : ‘Sept 1, 2014’, ‘categoryOfAssignment’ : ‘Homework’}, 
    {‘nameOfAssignment’ : ‘Test 1’, ‘dateOfAssignment’ : ‘Sept 14, 2014’, ‘categoryOfAssignment’ : 
    ‘Test’}, etc.]} 

回答

0

JSONlib是最简单的Java API在那里产生快速和肮脏的JSON。它拥有构建对象并将其转换为文本所需的一切。如果你需要更强大的东西,那就是GSon和杰克逊。

Here are some samples。这个例子是在Groovy中,所以它不是复制和粘贴的,但它告诉你如何使用它:

def array = new JSONArray() 
new File("/path/to/grades/files").eachFile { file -> 
    String rawJson = file.text 
    JSONObject obj = (JSONObject) JSONSerializer.toJSON(rawJson) 
    array = array.element(obj) 
}) 
println array.toString(5) //Use 5 character indentation 
+0

simple-json-1.1怎么样?这就是我一直在努力的。 – Daron 2014-10-18 15:20:26

+0

我认为你应该增加更多。你说X可以做Y,但不是试图解释如何。 – 2014-10-18 15:24:56

+0

如果我理解正确,那么你建议,为了动态创建一个JSON对象,该对象包含并向Rails应用程序发送所有必要的信息,我应该(1)将课程,学生和作业信息保存到文本文件先(2)发送该文件作为JSON对象? – Daron 2014-10-18 16:18:46