0
Json을 DataContract로 deserialize 할 목적으로 익명 메서드를 작성하려고합니다. 이렇게하면 각 json 쿼리에 대해 쓴 각 DataContract 클래스에 대해 동일한 코드를 작성하지 않고도 재사용 할 수있는 무언가를 가질 수 있습니다. 그것은 IDE 나에게 오류를주고있다문자열에서 DataContract로 json을 비 직렬화하는 메서드의 익명 형식
public T Json2Object<T>(string json, Encoding encoding) {
T result;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (Stream s = new MemoryStream((encoding ?? Encoding.UTF8).GetBytes(json ?? ""))) {
result = ser.ReadObject(s) as T;
}
return result;
}
다음과 같습니다 :
이이 하드 -없이 조정할 수있는 방법을 다음과 같이
내가 지금까지 가지고있는 코드입니다 형식을 코딩하여 의도대로 작동합니까?
아주 좋은, 감사합니다. 어디에서'T : class'를 사용하면'class'를 특정 클래스로 대체해야합니까? 예를 들어, 만약 datacontract 클래스의 이름이'Foo'라면'T : Foo' 또는''T : class'가 쓰여졌을 때 여전히 작동하겠습니까? –
@KraangPrime 아니, 'T : class'는 정확히 당신이 쓴 것을 필요로합니다. 'T'를 * 참조 형 *으로 제한합니다. 'int'는 값 타입이기 때문에'Json2Object (someJson, someEncoding)'을 쓰는 것을 금지합니다. 'int'를 전달하려면, 대신 캐스팅 접근법을 사용해야합니다. –
Rob
정말 대단합니다. 정확히 내가 필요로하는 것. 고맙습니다 :) –