แนวทางปฏิบัติที่ดีที่สุดในการดึงค่า JSON ที่อาจไม่มีอยู่ใน C # โดยใช้Json.NETคืออะไร
ตอนนี้ฉันกำลังติดต่อกับผู้ให้บริการ 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
ด้านล่างนี้