Apa praktik terbaik untuk mengambil nilai JSON yang bahkan mungkin tidak ada di C # menggunakan Json.NET ?
Saat ini saya berurusan dengan penyedia JSON yang mengembalikan JSON yang terkadang berisi pasangan kunci / nilai tertentu, dan terkadang tidak. Saya telah menggunakan (mungkin salah) metode ini untuk mendapatkan nilai saya (contoh untuk mendapatkan ganda):
if(null != jToken["width"])
width = double.Parse(jToken["width"].ToString());
else
width = 100;
Sekarang itu berfungsi dengan baik, tetapi jika ada banyak, itu tidak praktis. Saya akhirnya menulis metode ekstensi, dan hanya setelah menulisnya saya bertanya-tanya apakah mungkin saya bodoh ... bagaimanapun, berikut adalah metode ekstensi (saya hanya menyertakan kasus untuk double dan string, tetapi pada kenyataannya saya memiliki beberapa lebih):
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;
}
Dan inilah contoh penggunaan metode ekstensi:
width = jToken.GetValue<double>("width", 100);
BTW, Maafkan apa yang mungkin merupakan pertanyaan yang sangat bodoh, karena sepertinya ada sesuatu yang harus ada fungsi bawaan untuk ... Saya memang mencoba Google, dan dokumentasi Json.NET , namun saya tidak kompeten dalam menemukan solusi untuk pertanyaan saya atau tidak jelas dalam dokumentasi.
GetValue
bawah ini