2014-10-18 200 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