를 사용하여 재귀 클래스 계층 구조를 직렬화 할 수 없습니다. 사용자 정의 JsonConverter를 사용하여 JSON 문자열에서 비 직렬화해야합니다. 문제는 각 특정 사례에 대한 코드가 있지만 규칙 속성을 관리하기 위해 재귀 적으로 실행할 수 없다는 것입니다. 각 요소도 조건이 될 수 있습니다. 내 코드는이 (ReadJson 방법) 다음과 같습니다내가이 같은 클래스 계층이 JSON.NET
var jo = JObject.Load(reader);
Rule rule = null;
if (jo["condition"] == null)
{
rule = new Rule();
//fill the properties for rule
}
else
{
rule = new Condition();
//I now want the converter to go through all the values in jo["rules"] and turn them into Rules or Conditions
}
이를 달성하는 가장 좋은 방법은 무엇입니까? 오브젝트가 상태로 발견 된 경우 나, 나머지 부분에 대한 JSON을 얻기 위해 노력 :
var rules = JsonConvert.DeserializeObject<Rule[]>(json, this);
예외 :
var json = jo.GetValue("rule").ToString();
하지만이 같은 직렬화 할 수없는, 그것은 예외가 발생합니다 is : JsonReaderException : JsonReader에서 JObject를 읽는 중 오류가 발생했습니다. 현재 JsonReader 항목이 객체가 아닙니다 : StartArray. 경로 ', 1 줄, 위치 1
아이디어가 있으십니까?
무엇 JSON이 생겼는? –
물론 규칙 또는 조건의 배열과 같습니다. [{...}, { "condition": true, ...}] –