2017-02-17 129 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);       
} 
相关问题