2017-02-17 131 views
0

我想將json字符串轉換爲c#中的對象。我用幾個代碼嘗試了幾次,但它給了我一個解析錯誤。請參閱下面的json。如何將複雜的json字符串轉換爲對象c#

{ 
"Test Name1": [{ 
    "scores": [{ 
     "score": "-0.00", 
     "ethnicity": "Asian" 
    }, 
    { 
     "score": "0.00", 
     "ethnicity": "GreaterAfrican" 
    }, 
    { 
     "score": "1.00", 
     "ethnicity": "GreaterEuropean" 
    }], 
    "best": "European" 
}, 
{ 
    "scores": [{ 
     "score": "1.00", 
     "ethnicity": "British" 
    }, 
    { 
     "score": "0.00", 
     "ethnicity": "Jewish" 
    }, 
    { 
     "score": "-0.00", 
     "ethnicity": "WestEuropean" 
    }, 
    { 
     "score": "0.00", 
     "ethnicity": "EastEuropean" 
    }], 
    "best": "British" 
}], 
"Test Name2": [{ 
    "scores": [{ 
     "score": "-0.00", 
     "ethnicity": "Asian" 
    }, 
    { 
     "score": "0.00", 
     "ethnicity": "GreaterAfrican" 
    }, 
    { 
     "score": "1.00", 
     "ethnicity": "GreaterEuropean" 
    }], 
    "best": "GreaterEuropean" 
}, 
{ 
    "scores": [{ 
     "score": "-5.95", 
     "ethnicity": "British" 
    }, 
    { 
     "score": "6.95", 
     "ethnicity": "Jewish" 
    }, 
    { 
     "score": "0.00", 
     "ethnicity": "WestEuropean" 
    }, 
    { 
     "score": "-0.00", 
     "ethnicity": "EastEuropean" 
    }], 
    "best": "Jewish" 
}] 

}

我用下面的代碼嘗試。

var Result = client.PostAsync(APIURL, httpContent).Result; 
if(Result.IsSuccessStatusCode) 
    { 
     var responseStr = Result.Content.ReadAsStringAsync();  
        dynamic jsonObject = JsonConvert.DeserializeObject<object>(responseStr.ToString());       
    } 

但無法將其轉換爲對象。如何做到這一點?

+3

那是什麼您會收到錯誤消息? – maniak1982

+0

您是否使用Visual Studio? – jcc

+0

您必須等待異步調用,否則在讀取內容之前您將運行下一行。 – Crowcoder

回答

2

您試圖反序列化任務的「tostring」表示形式,而不是該任務的返回值。

試試這個:

if(Result.IsSuccessStatusCode) 
{ 
    var responseStr = await Result.Content.ReadAsStringAsync();  
    dynamic jsonObject = JsonConvert.DeserializeObject<object>(responseStr);       
} 
相關問題