숫자로 시작하거나 숫자 만 들어있는 일반 문자열의 비 직렬화를 처리하고 왜 그 것이 아닌지에 대한 좋은 해결책을 찾고 싶습니다. 지금처럼 일하지 마라.입력 문자열이 유효하지 않은 경우 JsonConvert.DeserializeObject를 사용하고 숫자로 시작하거나 숫자로 시작합니다.
입력 문자열을 제어 할 수 없어 유효하지 않은 Json에 의지 할 수 없으며 현재 Json인지 여부를 확인하고 있습니다.이 경우에는 " [{}} "하지만 더 좋은 방법이 있는지 알고 싶었습니다.
이 내가 그것을 deserialize하는거야 방법입니다
JsonConvert.DeserializeObject<MyClass[]>(myString);
내 클래스는 두 가지 속성이 있습니다 입력 문자열 "는"또는 "A2"는 그것이 Newtonsoft을 던졌습니다 단지의 경우
[JsonProperty(PropertyName = "key")]
public string Key { get; set; }
[JsonProperty(PropertyName = "value")]
public string Value { get; set; }
을 .Json.JsonException ("값을 파싱하는 동안 예기치 않은 문자가 발생했습니다 : 경로 ', 줄 0, 위치 0"). "2"와 "2a"는 다른 오류를 발생시킵니다. "2"와 "2a"에 대해 "a"와 "a2"에 대해 동일한 동작을 원합니다. "2"를 전달
예외 : "2A"를 전달
Newtonsoft.Json.JsonSerializationException : Error converting value 2 to type 'MyClass[]'. Path '', line 1, position 1.
System.ArgumentException : Could not cast or convert from System.Int64 to MyClass[].
예외 : 문자열이 숫자 만 포함하거나 시작 때
System.FormatException : Input string was not in a correct format.
가 왜 작동하지 않습니다 번호? "[{}]"으로 입력 문자열을 래핑하는 것보다 더 똑똑한 방법이 있습니까?
입력이 "2"또는 "2a"이면 어떻게 될까요? 결과에 대해 원하는 것은 무엇입니까? –
Kevin, 질문을 업데이트했습니다. "a"또는 "a2"를 전달할 때와 같은 결과가 필요합니다. 즉 Newtonsoft.Json.JsonException이 발생합니다 ("값을 파싱하는 동안 예기치 않은 문자가 발생했습니다 : 경로 ' ', line 0, position 0 "). –
'MyClass []'강력한 형식에 대한 입력을 deserialize하려고합니다. 그러나 입력 json은이 유형을 나타내지 않습니다. json을 입력하면 int가 유효하고 그 중 하나가 유효하고 ("2") 다른 것은 "2a"가 아닙니다. 두 번째는 json의 문자열 (예 : "\"2a \ ""C# 코드)로 작성되어야합니다. 귀하의 json이 형식이 잘못되었으므로 해결책을 제안하기 위해 부정확 한 방법을 정확히 알아야합니다. –