나는 다른 형태의 JSON 데이터 일반적으로 필터 JSON 정보
내가 모든 경우에 작동하고 동적 클래스를 사용하여 JSON을 구문 분석하는 (아니 내가 같은 항목이 있습니다받을 JSON 파일을 모두)를 수신하고 JSON 파일은 동일한 항목을 가지고 있지만이 경우에는 작동하지 않습니다. 다음 데이터에 대한 예를 들어 :[
{
"Player_Name": "Zlatan Ibrahimovic",
"Country": "Sweeden",
},
{
"Player_Name": "Pavel Nedved",
"Country": "Czech Republic",
"Personal_Honours":
{
"Ballon_DOr": "One",
},
}
]
처음 두 요소는 2 명 개의 제 1 엔트리를 공유 "PLAYER_NAME"와 "국제"그러나 두 번째 요소는 "Personal_Honours"
제 2 입력을 갖는다나는이 할 그렇다면 :
:이 클래스StreamReader reader = File.OpenText("TextFile1.txt");
List<PlayerData> DataList;
dynamic json = JsonConvert
.DeserializeObject<dynamic>(reader.ReadToEnd());
DataList = new List<PlayerData>();
foreach (dynamic data in json)
{
DataList.Add(new PlayerData
{
Name = json.Player_Name,
Country = json.Country ,
BallonDor = json.Personal_Honours.Ballon_DOr
});
}
을
내가 얻을 RuntimeBinderException
첫 번째 항목은 Personal_Honours를 포함하지 않기 때문에 분석 할 JSON은
가 어떻게이 오류를 관리 할 수 있습니다 이 항목을 포함 할 경우 "나는 미리 알 수 없습니다?
나는 Zlatan Ibrahimovic 항목에 "Market_Value"를 추가하기 위해 json 데이터를 편집했지만 다른 항목은 추가하지 않았습니다. "MarketValue = data.Market_Value == null? null : data.Market_Value "하지만 RuntimeBinder Excepetion에 무엇이 잘못 되었습니까? – user2505650
@ user2505650'Ballon_DOr'은 루트 객체의 일부가 아니며'Personal_Honours' 클래스의 속성입니다. 따라서 PlayerData 클래스를 잊어 버리고 그것에 대해 조금. 내 질문을 다시 읽으십시오 (올바른 방법을 보여줍니다). 곧 제거 할 것이기 때문에. –