public class Rootobject
{
public EnPickthall enpickthall { get; set; }
}
public class EnPickthall
{
public _1 _1 { get; set; }
public _2 _2 { get; set; }
public _3 _3 { get; set; }
public _4 _4 { get; set; }
/* This goes on*/
public _6236 _6236 { get; set;}
}
//For Each of the above properties a separate class has been defined:
public class _1
{
public int id { get; set; }
public int surah { get; set; }
public int ayah { get; set; }
public string verse { get; set; }
}
public class _2
{
public int id { get; set; }
public int surah { get; set; }
public int ayah { get; set; }
public string verse { get; set; }
}
/* So On for all the properties */
我通过JSON2CSHARP得到了这个! 我的问题是,如果我使用这么多属性来检索基于他们的" Surah"会非常 困难&不切实际
这里我有一本EnPickthall课程的书,每节经文都有一个单独的课程。每节经文都有它自己的课程。
我一直在清理Stack Overflow几个小时。有什么方法可以简化这个JSON类。
创建对象模型的代码:
var serializer = new DataContractJsonSerializer(typeof(RootObject_Quran));
var result= App_Code.FileIOHelper.ReadFromDefaultFile("ms-appx:///Assets/en.pickthall.json");
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject_Quran)serializer.ReadObject(ms);
我的JSON文件链接:http://globalquran.com/download/data/download.php?data_by=json&quran_by_id[]=en.pickthall
答案 0 :(得分:1)
只有一个名为Verse的课程。
if ($_POST["cmd"]=='setclosed') {
$updatecontent_success=array('stamp_closed'=>$localtime);
$updateContractTicket($show_details,$updatecontent_success);
echo json_encode(array('Status' => 'Ok'));
exit(0);
}
每个经文都不需要一个键,因为surah / aya组合足以唯一地识别一节经文。
这样可以轻松地进行序列化/反序列化,并且通过在Surah和Aya上订购,还可以轻松地再次收集整个古兰经。然后,您可以简单地使用LINQ重新组装整本书,按上述状态排序。或者根据搜索条件从中收集段落也非常简单,例如: 27:18-20
答案 1 :(得分:0)
Json与属性en.pickthall嵌套,而不是所有数据包装器再次进入属性,如id号,所以我创建了类,该类有Dictionary来处理数据和数字
[JsonProperty(PropertyName =" en.pickthall")]
public Dictionary picthall {get; set;}
public class VerseObject
{
[JsonProperty(PropertyName = "en.pickthall")]
public Dictionary<int, Data> picthall {get;set;}
}
public class Data
{
[JsonProperty(PropertyName = "id")]
public int id;
[JsonProperty(PropertyName = "surah")]
public int surah;
[JsonProperty(PropertyName = "ayah")]
public int ayah;
[JsonProperty(PropertyName = "verse")]
public string verse;
}
class Program
{
static void Main(string[] args)
{
List<Data> v = new List<Data>();
using (StreamReader rdr = new StreamReader(@"C:\Temp\en.pickthall.json"))
{
var str = rdr.ReadToEnd();
var jsn = JsonConvert.DeserializeObject<VerseObject>(str);
foreach(var item in jsn.picthall.Select(x=>x.Value))
{
v.Add(item);
}
Console.ReadLine();
}
}
}