Json.NET을 사용하여 C #에 존재하지 않을 수도있는 JSON 값을 검색하는 가장 좋은 방법은 무엇입니까 ?
지금은 때때로 특정 키 / 값 쌍을 포함하고 때로는 포함하지 않는 JSON을 반환하는 JSON 공급자를 다루고 있습니다. 나는 내 값을 얻기 위해 (아마도 잘못되었을 수도 있음)이 방법을 사용하고 있습니다 (더블을 얻는 예).
if(null != jToken["width"])
width = double.Parse(jToken["width"].ToString());
else
width = 100;
이제는 잘 작동하지만 많은 경우 번거 롭습니다. 결국 확장 메서드 를 작성하고 나서야 멍청한 것인지 궁금합니다 ... 어쨌든 여기에 확장 메서드가 있습니다. 더):
public static T GetValue<T>(this JToken jToken, string key,
T defaultValue = default(T))
{
T returnValue = defaultValue;
if (jToken[key] != null)
{
object data = null;
string sData = jToken[key].ToString();
Type type = typeof(T);
if (type is double)
data = double.Parse(sData);
else if (type is string)
data = sData;
if (null == data && type.IsValueType)
throw new ArgumentException("Cannot parse type \"" +
type.FullName + "\" from value \"" + sData + "\"");
returnValue = (T)Convert.ChangeType(data,
type, CultureInfo.InvariantCulture);
}
return returnValue;
}
다음은 확장 메서드를 사용하는 예입니다.
width = jToken.GetValue<double>("width", 100);
BTW, 정말 멍청한 질문이 될 수있는 것을 용서해주세요. 기능이 내장되어 있어야 할 것 같기 때문입니다. 저는 Google 및 Json.NET 문서를 사용해 보았지만 해결책을 찾는 데 무능합니다. 내 질문 또는 문서에 명확하지 않습니다.
GetValue아래