programing

개체를 json 문자열 대신 JObject로 직접 직렬화합니다.그물

kakaobank 2023. 3. 8. 21:31
반응형

개체를 json 문자열 대신 JObject로 직접 직렬화합니다.그물

개체를 직접 에 직렬화하는 방법JObject인스턴스가 있습니다.Net? 일반적으로 다음과 같이 개체를 json 문자열로 직접 변환합니다.

string jsonSTRINGResult = JsonConvert.SerializeObject(someObj);

그 후, 그것을 디시리얼라이즈 할 수 있다.JObject다음과 같습니다.

JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult);

이 방법은 효과가 있는 것 같습니다만, 이 방법은 이중의 퍼포먼스 히트(시리얼라이즈 후 디시리얼라이즈)가 있는 것 같습니다.한다SerializeObject내부적으로 사용하다JObject어떻게 접근할 수 있을까요?아니면 직접 시리얼화 할 수 있는 방법이 있을까요?JObject?

사용할 수 있습니다.FromObject정적 방법JObject

JObject jObj = JObject.FromObject(someObj)

http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm

주의해 주십시오.JObject@Eser가 제안하는 루트는 비배열 CLR 오브젝트에 대해서만 기능합니다.어레이 개체를 다음과 같이 변환하려고 하면 다음과 같은 예외가 발생합니다.JObject:

유형 'System'의 처리되지 않은 예외입니다.InvalidCastException'이 Newtonsoft에서 발생했습니다.Json.dll

추가 정보:'Newtonsoft' 형식의 개체를 캐스팅할 수 없습니다.Json.Linq.JArray를 입력하고 Newtonsoft를 입력합니다.Json.Linq.'JOBject'

따라서 어레이 오브젝트인 경우,JArray대신 아래 코드 스니펫에 나타나 있듯이

using Newtonsoft.Json.Linq;

JArray jArray = JArray.FromObject(someArrayObject);

모든 것을 조합하려면: 모든 것에 JToken을 사용합니다(Objects AND Arrays).

JToken token = JToken.FromObject(someObjectOrArray);

그럼 확인하세요.token.Type(오브젝트, 어레이 등)입니다.

언급URL : https://stackoverflow.com/questions/33088297/serialize-an-object-directly-to-a-jobject-instead-of-to-a-string-in-json-net

반응형