我正在構建一個處理調查的應用程序,以供人們在C#環境中填寫。Newtonsoft Json解串器無法正常工作
當我正常運行應用程序時,一切正常,反序列化作品,序列化作品,一切正常。
當我發送調查時,一切都很順利。當我重新打開應用程序時,程序會自動向服務器發送請求以檢索可用的調查。但是當他試圖對json進行反序列化時,他發現他需要製作2個子對象,但是不能填充它們。
我查看了我是否得到的json是正確的,它是。問題似乎是反序列化不知道數據的去向(儘管他通常使用完全相同的方法)。
我得到的卻是:
- 根:這是基本變量,爲空,直到它被填滿。所以我知道反序列化正在做一些事情。
- newSurvey:創建者的反序列化,但沒有得到填補(保持空)
- 結果:創建者的反序列化,但沒有得到填補(保持空)
的JSON看起來像這樣(請記住我不停的數據本身出來,這是一個精簡版):
{
"id": "data",
"name": "data",
"description": "data",
"surveyVersion": "data",
"welcomeMessage": "data",
"exitMessage": "data",
"anonymousAnswers": false,
"publicationDate": "data",
"expirationDate": "data",
"serverInstanceName": "data",
"documentVersion": "data",
"questions": [
{
"id": "data",
"position": 0,
"text": "data",
"answerRequired": true,
"dependsOn": null,
"dependencyType": null,
"dependencyParameter": null,
"choices": null,
"type": {
"name": "data",
"hasChoices": false,
"multipleAnswersPossible": false
},
"defaultValue": null,
"openOption": null,
"maxOpenOption": null,
"maxCharacters": "data",
"minimumAnswers": null,
"maximumAnswers": null,
"answers": null,
"openAnswers": null
}
]}
我檢查使用http://jsonlint.com/的JSON,它是正確的,我還可以手動檢查數據,它包含了所有的數據我需要。
現在我不知道如何確保他如果不想這樣做會正常反序列化。如果我沒有發送調查,一切正常,只有在我發送調查並重新啓動應用程序後纔會發生。
代碼發生錯誤:
if (jSONSurvey != "") {
if (newSurveys != null) {
var root = JsonConvert.DeserializeObject<RootObject> (jSONSurvey);
if (root.newSurveys != null)
newSurveys = root.newSurveys;
} else {
newSurveys = new List<NewSurvey>();
var root = JsonConvert.DeserializeObject<RootObject> (jSONSurvey);
if (root.newSurveys != null)
newSurveys = root.newSurveys;
}
崩潰的部分是else語句。
你有一個代碼示例,顯示錯誤來自哪裏? – northben
你發佈的Json缺少一些'}'這是一個錯字嗎? – Liam
事實上,它根本就是無效的json。 – Liam