我是一名與PeopleSoft HCM 9.1一起工作的公司的軟件工程師。我爲我們的Sharepoint和.NET團隊編寫Web服務以使用這些RESTful Web服務。我發送的內容類型是application/json,集成代理所做的序列化非常好。我遇到了一個問題,我們的.NET工程師發誓說它不合法,但是,當我訪問JSON解析器網站並檢查它是否有效時,它就是這樣。這是問題。數據以JSON形式出現,但有一個屬性,其首次出現的數據類型是一個對象。進入的第二行將其更改爲列表/數組。我無法改變這一點,因爲它是Oracle PeopleSoft實施的交付序列化的一部分。下面是示例 -PeopleSoft JSON動態屬性數據類型
{"C_DATA":
[{
"HRS_PERSON_ID": 120483,
"HRS_PROFILE_SEQ": 17,
"HRS_JOB_OPENING_ID": 125075,
"HRS_QSTN_ID": 1354,
"HRS_JO_RQMT_SEQ": 1,
"HRS_QSTN_ORDER_NBR": 4,
"HRS_OPN_ENDED_QSTN": "Y",
"HRS_DELETE_REQ": "",
"HRS_REF_NUM_LONG": "",
"HRS_RATING": "",
"HRS_RANKING": 0,
"HRS_ANSWER_ID": 0,
"HRS_OPEN_ENDED_ANS": "",
"C_ONLINE_SCREEN": "N",
"DESCRLONG": "What is the phone number of your emergency contact?",
"C_HRS_APP_QSTA": {
"HRS_JOB_OPENING_ID": 125075,
"HRS_JO_RQMT_SEQ": 0,
"HRS_QSTN_ID": 1354,
"HRS_ANSWER_ID": 0,
"CORRECT_ANSWER": "",
"HRS_POINTS": 0,
"DESCR254": "",
"ORDER_SEQ": 0
}
},
{
"HRS_PERSON_ID": 120483,
"HRS_PROFILE_SEQ": 17,
"HRS_JOB_OPENING_ID": 125075,
"HRS_QSTN_ID": 1355,
"HRS_JO_RQMT_SEQ": 1,
"HRS_QSTN_ORDER_NBR": 5,
"HRS_OPN_ENDED_QSTN": "N",
"HRS_DELETE_REQ": "",
"HRS_REF_NUM_LONG": "",
"HRS_RATING": "",
"HRS_RANKING": 0,
"HRS_ANSWER_ID": 0,
"HRS_OPEN_ENDED_ANS": "",
"C_ONLINE_SCREEN": "N",
"DESCRLONG": "Have you ever been arrested?",
"C_HRS_APP_QSTA": [
{
"HRS_JOB_OPENING_ID": 125075,
"HRS_JO_RQMT_SEQ": 1,
"HRS_QSTN_ID": 1355,
"HRS_ANSWER_ID": 1000,
"CORRECT_ANSWER": "N",
"HRS_POINTS": 0,
"DESCR254": "Yes",
"ORDER_SEQ": 1
},
{
"HRS_JOB_OPENING_ID": 125075,
"HRS_JO_RQMT_SEQ": 1,
"HRS_QSTN_ID": 1355,
"HRS_ANSWER_ID": 1001,
"CORRECT_ANSWER": "Y",
"HRS_POINTS": 0,
"DESCR254": "No",
"ORDER_SEQ": 2
}
]
}
]
}
通知的C_HRS_APP_QSTA屬性如何是第一對象(與{}),在它的一個列表/陣列(其具有方括號[])第二次運行。
首先,這是合法的嗎?根據JSON解析器,這是完全合法的。 (檢查它在這裏:http://jsonformatter.curiousconcept.com/)
二,這是最佳實踐?根據這位.NET開發人員,他說Web服務應該像合同一樣,所以他知道需要什麼樣的數據類型,並且不應該像這樣改變他。是的,我知道他來自哪裏,但是有沒有標準化的行業慣例?如果是這樣,文件/證明在哪裏?我想要一個來自大學計算機科學頁面的網站或一些說「這是最佳實踐」的合法文檔。
現在我的最後一個問題是,開發人員是否真的很難以一種方式對代碼進行編碼,以便每次檢查它是否是列表或對象?我不認爲這是事實,但是這位開發人員發誓,這是「太多的代碼」或「太多的工作」,不得不每次都適應這一點。
你說什麼?我希望這是有道理的。我試圖儘可能簡單明確地描述這一點。
謝謝!
看起來我並不是唯一有此問題的人。這裏有人發佈了類似的東西[http://scripting.com/stories/2010/12/18/questionForJsonGurus.html#thisCausesProblemsForPeopleInSomeLanguagesBeeauseApparentlyItsHardForThemToDealWithAnObjectWithoutInAdvanceKnowingItsTypeSoTheySayTheSolution IsSimpleAlwaysMakeItAListSimpleForThemBut] – TSuperman29 2015-03-03 17:53:54