এখানে আমি একটি সহজ ক্লাস যা বিভিন্ন পোস্ট থেকে একসাথে আঁকড়েছি .... এটি প্রায় 15 মিনিটের জন্য পরীক্ষা করা হয়েছে, তবে আমার উদ্দেশ্যগুলির জন্য কাজ করছে বলে মনে হচ্ছে । এটি JavascriptSerializer
কাজটি করতে ব্যবহার করে, যা এই পোস্টে বিস্তারিত তথ্য ব্যবহার করে আপনার অ্যাপ্লিকেশনটিতে উল্লেখ করা যেতে পারে ।
এটি পরীক্ষা করার জন্য নীচের কোডটি লিনকপ্যাডে চালানো যেতে পারে:
- লিনকপ্যাডে আপনার স্ক্রিপ্ট ট্যাবে ডান ক্লিক করে এবং "কোয়েরি প্রোপার্টি" নির্বাচন করে
- "অতিরিক্ত রেফারেন্স" এ "সিস্টেম.ওয়েব.এক্সটেনশন.ডিল" উল্লেখ করা হচ্ছে
- "System.Web.Script.Serialization" এর একটি "অতিরিক্ত নেমস্পেস আমদানি" যুক্ত করা হচ্ছে।
আশা করি এটা সাহায্য করবে!
void Main()
{
string json = @"
{
'glossary':
{
'title': 'example glossary',
'GlossDiv':
{
'title': 'S',
'GlossList':
{
'GlossEntry':
{
'ID': 'SGML',
'ItemNumber': 2,
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef':
{
'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']
},
'GlossSee': 'markup'
}
}
}
}
}
";
var d = new JsonDeserializer(json);
d.GetString("glossary.title").Dump();
d.GetString("glossary.GlossDiv.title").Dump();
d.GetString("glossary.GlossDiv.GlossList.GlossEntry.ID").Dump();
d.GetInt("glossary.GlossDiv.GlossList.GlossEntry.ItemNumber").Dump();
d.GetObject("glossary.GlossDiv.GlossList.GlossEntry.GlossDef").Dump();
d.GetObject("glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso").Dump();
d.GetObject("Some Path That Doesnt Exist.Or.Another").Dump();
}
// Define other methods and classes here
public class JsonDeserializer
{
private IDictionary<string, object> jsonData { get; set; }
public JsonDeserializer(string json)
{
var json_serializer = new JavaScriptSerializer();
jsonData = (IDictionary<string, object>)json_serializer.DeserializeObject(json);
}
public string GetString(string path)
{
return (string) GetObject(path);
}
public int? GetInt(string path)
{
int? result = null;
object o = GetObject(path);
if (o == null)
{
return result;
}
if (o is string)
{
result = Int32.Parse((string)o);
}
else
{
result = (Int32) o;
}
return result;
}
public object GetObject(string path)
{
object result = null;
var curr = jsonData;
var paths = path.Split('.');
var pathCount = paths.Count();
try
{
for (int i = 0; i < pathCount; i++)
{
var key = paths[i];
if (i == (pathCount - 1))
{
result = curr[key];
}
else
{
curr = (IDictionary<string, object>)curr[key];
}
}
}
catch
{
// Probably means an invalid path (ie object doesn't exist)
}
return result;
}
}
JavaScriptSerializer
ওভার এমএসের সংস্করণটি সুপারিশ করি কারণ এটি ডাব্লুসিএফের কাস্টম জেএসওএন ফর্ম্যাটিং ছাড়া অন্য কিছু গ্রহণ করবে না (যেমন তারিখের মতো দেখতে তারিখের ক্ষেত্রগুলি যা তারিখের মতো দেখায় না) (খারাপভাবে ব্যর্থ হয়)