如何使用类名将json反序列化为动态值? [英] How to deserialize json with class name as dynamic values?

查看:82
本文介绍了如何使用类名将json反序列化为动态值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

This is My Json string.
--------------------------------

{
	"flag": "success",
	"data": {
		"data": {
			"111349": {
				"pkgname": "com.saavn.android",
				"name": "APP Download - Saavn - Android(MY)"
			},
			"111350": {
				"pkgname": "com.saavn.android",
				"name": "APP Download - Saavn - Android(TH)"
			},
			"111351": {
				"pkgname": "com.saavn.android",
				"name": "APP Download - Saavn - Android(IN)"
			}
		}
	}
}

-----------------------------
After the deserialize json, below is my Class name.
-----------------------------

public class __invalid_type__111349
{
    public string pkgname { get; set; }
    public string name { get; set; }
}
public class __invalid_type__111350
{
    public string pkgname { get; set; }
    public string name { get; set; }
}
public class __invalid_type__111351
{
    public string pkgname { get; set; }
    public string name { get; set; }
}
public class Data2
{
    public __invalid_type__111349 __invalid_name__111349 { get; set; }
    public __invalid_type__111350 __invalid_name__111350 { get; set; }
    public __invalid_type__111351 __invalid_name__111351 { get; set; }
}
public class Data
{
    public Data2 data { get; set; }
}
public class RootObject
{
    public string flag { get; set; }
    public Data data { get; set; }
}







------------- ---------

在每个请求111349,111350,111351 ....这个节点将会改变,所以我想读取那个节点(存储在任何对象中)和同时在子节点下读取。

----------------------




----------------------
In each Request 111349,111350,111351....this Nodes will be-change,So i want to read that Node(Store in any Object) and Read Under Sub-Node also.
----------------------

推荐答案

你是一个创建JSON?如果你当时也许这个



are you the one creating the JSON ? if you are then perhaps this

Quote:

111349:{

pkgname:com.saavn.android,

名称:APP下载 - Saavn - Android(MY)

}

"111349": {
"pkgname": "com.saavn.android",
"name": "APP Download - Saavn - Android(MY)"
}





会更好(也许)





would be better off as (perhaps)

引用:

{

request:111349,

pkgname:com.saavn .android,

名称:APP下载 - Saavn - Android(MY)

}

{
"request": "111349",
"pkgname": "com.saavn.android",
"name": "APP Download - Saavn - Android(MY)"
}





然后你可以返回这些对象的数组 - 你还在JSON返回中有多个(可能是多余的)'数据'级别



Then you could have an array of these objects returned - you also have multiple (likely redundant) levels of 'data' in the JSON return


--------------Create the Json Class file--------------
 
 class RootObject
        {
            public string flag { get; set; }
            public Data2 data;
        }
        class Data2
        {
            public Dictionary<string, Data> data { get; set; }
        }
        class Data
        {
            public string pkgname { get; set; }
            public string name { get; set; }
        }
}


------------------Function Wise-------------------

  public void readYM_Json(string json)
        {
   RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
         string Flag = root.flag;
        foreach (var i in root.data.data.Keys)
            {
                int  OffierID = i;
                Data data = root.data.data[i];
                string    pkgname = data.pkgname;
               string    name = data.name;
---here call the Insert FUnction--------
}


这篇关于如何使用类名将json反序列化为动态值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆