【问题标题】:Dynamic Creation of JSON Object ArraysJSON对象数组的动态创建
【发布时间】:2014-12-13 23:49:59
【问题描述】:

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

我一直在尝试创建一个 HTTP POST 请求,该请求使用 JSON 将信息从 Java 成绩簿应用程序发送到基于 Web 的 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.]}

【问题讨论】:

    标签: java json dynamic


    【解决方案1】:

    JSONlib 是最简单的 Java API,用于生成快速而肮脏的 JSON。它拥有构建对象并将其转换为文本所需的一切。如果您需要更强大的功能,可以使用 GSon 和 Jackson。

    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
    

    【讨论】:

    • simple-json-1.1 怎么样?这就是我一直在努力的。
    • 我认为你应该添加更多。你是说 X 可以做 Y,但没有试图解释如何做。
    • 如果我理解正确,那么您的建议是,为了动态创建一个 JSON 对象,该对象包含并向 Rails 应用程序发送所有必要的信息。我应该(1)保存课程,先将学生和作业信息发送到文本文件,然后 (2) 将该文件作为 JSON 对象发送?
    猜你喜欢
    • 2016-09-04
    • 2022-01-03
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多