使用C#

时间:2016-04-01 20:27:54

标签: c# json

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

2 个答案:

答案 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();
            }
        }


    }