大神,求帮助,把json转成对象

muguaigun 2014-10-13 10:40:56
下面是一串json串 我想把它转成(序列化)对象,简单的我可以转 但是这个我头疼了 这要建几个Class啊
{
"total": 2,
"count": 2,
"data": {
"openid": [
"",
"OPENID1",
"OPENID2",
"OPENID3"
...
]
},
"next_openid": "NEXT_OPENID"
}
...全文
180 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
//public static DataSet theRequstReturn(string url ) //{ // url = "http://localhost:9095/" + url; // string html = ""; // WebRequest request; // Encoding encoding = Encoding.GetEncoding("gb2312"); // request = WebRequest.Create(url); // request.Credentials = CredentialCache.DefaultCredentials; // request.Timeout = 20000; // WebResponse response; // response = request.GetResponse(); // html = new StreamReader(response.GetResponseStream(), encoding).ReadToEnd(); // XmlDocument xmlDoc = new XmlDocument(); // xmlDoc.LoadXml(html); // return ConvertXMLFileToDataSet(xmlDoc); //} public static DataSet ConvertXMLFileToDataSet(XmlDocument xmld) { StringReader stream = null; XmlTextReader reader = null; try { DataSet xmlDS = new DataSet(); stream = new StringReader(xmld.InnerXml); //从stream装载到XmlTextReader reader = new XmlTextReader(stream); xmlDS.ReadXml(reader); //xmlDS.ReadXml(xmlFile); return xmlDS; } catch (System.Exception ex) { throw ex; } finally { if (reader != null) reader.Close(); } } 使用时使用 DataSet.Tables["多个字段的名称"] 进行读取
申江渔夫 2014-10-14
  • 打赏
  • 举报
回复
这种问题就没必要重造轮子了吧。
  • 打赏
  • 举报
回复
引用 12 楼 wg5945 的回复:
[quote=引用 5 楼 muguaigun 的回复:] [quote=引用 3 楼 u011710947 的回复:] [quote=引用 2 楼 u011710947 的回复:] 这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
引用后 直接 var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);[/quote] 公司不让用这些东西[/quote] 不会有哪个公司不让用这个的吧~~ 到底是你认为公司不让用呢?还是真的不给用~~ 你可以找个旁边的问问~~[/quote] 是啊。“到底是你认为公司不让用呢?还是真的不让用~~”
天下如山 2014-10-14
  • 打赏
  • 举报
回复
JavaScriptSerializer 好用看得到..
天空丶蒋 2014-10-14
  • 打赏
  • 举报
回复
JavaScriptSerializer 用这个吧
wg5945 2014-10-13
  • 打赏
  • 举报
回复
引用 5 楼 muguaigun 的回复:
[quote=引用 3 楼 u011710947 的回复:] [quote=引用 2 楼 u011710947 的回复:] 这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
引用后 直接 var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);[/quote] 公司不让用这些东西[/quote] 不会有哪个公司不让用这个的吧~~ 到底是你认为公司不让用呢?还是真的不给用~~ 你可以找个旁边的问问~~
明明I如月 2014-10-13
  • 打赏
  • 举报
回复
引用 6 楼 muguaigun 的回复:
[quote=引用 4 楼 landy1023 的回复:] public class Info { …… } public class Data { public List<string> openid; }
类我建好了 但是用什么方法对json转成对象呢?[/quote] 引入 using Newtonsoft.Json; using Newtonsoft.Json.Linq; 然后 Info info = JsonConvert.DeserializeObject<Info>(str); 如果公司不让用Newtonsoft,就直接用自带的,using System.Web.Script.Serialization; private JavaScriptSerializer myscript = new JavaScriptSerializer(); Info info = myscript.Deserialize<Info>(str);
宝_爸 2014-10-13
  • 打赏
  • 举报
回复
引用 6 楼 muguaigun 的回复:
[quote=引用 4 楼 landy1023 的回复:] public class Info { public string total { get; set; } public string count { get; set; } public Data data { get; set; } public string next_openid { get; set; } } public class Data { public List<string> openid; }
类我建好了 但是用什么方法对json转成对象呢?[/quote] public static string Serialize<T>(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); MemoryStream ms = new MemoryStream(); serializer.WriteObject(ms, obj); string retVal = Encoding.UTF8.GetString(ms.ToArray()); return retVal; } public static T Deserialize<T>(string json) { T obj = Activator.CreateInstance<T>(); MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)); DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); obj = (T)serializer.ReadObject(ms); ms.Close(); return obj; } 来自: How to Convert JSON object to Custom C# object? http://stackoverflow.com/questions/2246694/how-to-convert-json-object-to-custom-c-sharp-object
宝_爸 2014-10-13
  • 打赏
  • 举报
回复
引用 5 楼 muguaigun 的回复:
[quote=引用 3 楼 u011710947 的回复:] [quote=引用 2 楼 u011710947 的回复:] 这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
引用后 直接 var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);[/quote] 公司不让用这些东西[/quote] 用微软自己的DataContractJsonSerializer 参考: Serializing and Deserializing JSON in C# https://www.udemy.com/blog/json-serializer-c-sharp/ msdn的解释: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(v=vs.110).aspx
by_封爱 2014-10-13
  • 打赏
  • 举报
回复
引用 5 楼 muguaigun 的回复:
公司不让用这些东西
辞职吧... 我在想 你的bin下 是否连DLL都没有 或者说 你连bin都没有...
slwsss 2014-10-13
  • 打赏
  • 举报
回复
泛型 List Dictionary
muguaigun 2014-10-13
  • 打赏
  • 举报
回复
引用 4 楼 landy1023 的回复:
public class Info { public string total { get; set; } public string count { get; set; } public Data data { get; set; } public string next_openid { get; set; } } public class Data { public List<string> openid; }
类我建好了 但是用什么方法对json转成对象呢?
muguaigun 2014-10-13
  • 打赏
  • 举报
回复
引用 3 楼 u011710947 的回复:
[quote=引用 2 楼 u011710947 的回复:] 这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
引用后 直接 var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);[/quote] 公司不让用这些东西
明明I如月 2014-10-13
  • 打赏
  • 举报
回复
public class Info { public string total { get; set; } public string count { get; set; } public Data data { get; set; } public string next_openid { get; set; } } public class Data { public List<string> openid; }
  • 打赏
  • 举报
回复
引用 2 楼 u011710947 的回复:
这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
引用后 直接 var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
  • 打赏
  • 举报
回复
这哪需要你自己搞 网上开源的一大堆 http://json.codeplex.com/
muguaigun 2014-10-13
  • 打赏
  • 举报
回复
转成实体类
  • 打赏
  • 举报
回复
引用 5 楼 muguaigun 的回复:
公司不让用这些东西
关于json网上源码一大堆。。。。 不让引别人的dll,你抄个源代码就行了。。。 还有你们公司有这么奇葩 QQ上还引用了别人的开源项目呢

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧