반응형
에 대한 JOBject를 디시리얼화하는 방법NET 객체
저는 뉴턴소프트 JSON 라이브러리를 즐겁게 사용하고 있습니다.예를 들어, I'm create authority.JObject
로부터.NET 객체(이 경우 예외 인스턴스)(서브 클래스일 수도 있고 아닐 수도 있음)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
라이브러리가 오브젝트에 대한 JSON 텍스트(즉 문자열)를 역직렬화할 수 있다는 것을 알게 되었습니다.
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
하지만 내가 원하는 건
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
음, 내가 처음부터 할 수 있는 것은 확실하다.JObject
JSON 텍스트로 돌아가서 역직렬화 기능을 사용합니다만, 이것은 거꾸로 보입니다.
이 투고에 따르면, 지금은 훨씬 더 좋아졌습니다.
// pick out one album
JObject jalbum = albums[0] as JObject;
// Copy to a static Album instance
Album album = jalbum.ToObject<Album>();
이 문서에서 다음을 발견했습니다.
JObject o = new JObject(
new JProperty("Name", "John Smith"),
new JProperty("BirthDate", new DateTime(1983, 3, 20))
);
JsonSerializer serializer = new JsonSerializer();
Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));
Console.WriteLine(p.Name);
클래스 정의Person
는 다음과 호환성이 있어야 합니다.
class Person {
public string Name { get; internal set; }
public DateTime BirthDate { get; internal set; }
}
최신 버전의 JSON.net 를 사용하고 있어 커스텀시리얼라이제이션이 필요 없는 경우는, 보다 간결한 Tien Do 의 회답을 참조해 주세요.
누군가 다른 방법을 찾을 경우를 대비해서 너무 늦었다.
void Main()
{
string jsonString = @"{
'Stores': [
'Lambton Quay',
'Willis Street'
],
'Manufacturers': [
{
'Name': 'Acme Co',
'Products': [
{
'Name': 'Anvil',
'Price': 50
}
]
},
{
'Name': 'Contoso',
'Products': [
{
'Name': 'Elbow Grease',
'Price': 99.95
},
{
'Name': 'Headlight Fluid',
'Price': 4
}
]
}
]
}";
Product product = new Product();
//Serializing to Object
Product obj = JObject.Parse(jsonString).SelectToken("$.Manufacturers[?(@.Name == 'Acme Co' && @.Name != 'Contoso')]").ToObject<Product>();
Console.WriteLine(obj);
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
언급URL : https://stackoverflow.com/questions/4441466/how-to-deserialize-a-jobject-to-net-object
반응형
'programing' 카테고리의 다른 글
이 파일 형식을 처리하려면 적절한 로더가 필요할 수 있습니다. 현재 이 파일을 처리하도록 구성된 로더는 없습니다." (0) | 2023.03.19 |
---|---|
의 생성자 매개 변수 0에는 'java.lang' 유형의 빈이 필요합니다.String'을 찾을 수 없습니다. (0) | 2023.03.19 |
페이지 번호 링크가 작동하지 않음 /page/2 - 찾을 수 없음 - Wordpress (0) | 2023.03.14 |
Angular에서 간단한 부트스트랩 예/아니오 확인 또는 알림 경고 생성JS (0) | 2023.03.14 |
Jackson JSON 역직렬화(복수의 파라미터 컨스트럭터 사용) (0) | 2023.03.14 |