我是一名日语初学者日语单词2000,而且是看着电脑自学,进度很慢,请问昆明佩文教育可以学吗?

11483人阅读
Newtonsoft.Json.Net20.dll 下载请访问/hualei/Newtonsoft.Json.Net20.rar
在.net 2.0中提取这样的json
{&name&:&lily&,&age&:23,&addr&:{&city&:guangzhou,&province&:guangdong}}
引用命名空间
using Newtonsoft.J
using Newtonsoft.Json.L
可以把上面的JSON看成一个对象.你只要写对应的类即可
public class UserInfo
public class address
然后在解析的地方这样写:
string jsonData=&{\&name\&:\&lily\&,\&age\&:23,\&addr\&:{\&city\&:guangzhou,\&province\&:guangdong}}&;
UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
得到City的值只要:user.addr.C
这样实现也行
JObject jsonObj = JObject.Parse(jsonData);
string name=jsonObj [&name&].ToString();
string age=jsonObj [&age&].ToString();
string city=((JObject )jsonObj [&addr&])[&city&].ToString();
string province=((JObject )jsonObj [&addr&])[&province&].ToString();
如 何这个json是动态的呢?譬如让你输入一个json,如{&name&:&lily&,&age&:23,&addr&: {&city&:guangzhou,&province&:guangdong}}; 然后让你输入一个对象,如city,然后系统会输出guangzhou这个值,那这样的话,json就是动态生成的了,我想了解有没有读取这样的json 的方法。(注意,json是多级嵌套的。)
public string GetJsonValue(JEnumerable&JToken& jToken,string key)
IEnumerator enumerator = jToken.GetEnumerator();
while (enumerator.MoveNext())
JToken jc = (JToken)enumerator.C
if (jc is JObject||((JProperty)jc).Value is JObject)
return GetJsonValue(jc.Children(), key);
if (((JProperty)jc).Name == key)
return ((JProperty)jc).Value.ToString();
在调用的时候:
string jsonData = &{\&name\&:\&lily\&,\&age\&:23,\&addr\&:{\&city\&:\&guangzhou\&,\&province\&:\&guangdong\&}}&;
JObject jsonObj = JObject.Parse(jsonData);
Response.Write(GetJsonValue(jsonObj.Children(), &province&));
如果有多层嵌套的数组
string &jsonData = &{\&addr\&:[{\&city\&:\&guangzhou\&,\&province\&:\&guangdong\&},{\&city\&:\&guiyang\&,\&province\&:\&guizhou\&}]}&;
JObject &jsonObj = JObject.Parse(jsonData);
JArray &jar = JArray.Parse(jsonObj[&addr&].ToString());
JObject &j = JObject.Parse(jar[0].ToString());
Response.Write(j[&city&]);
string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156885次
积分:1750
积分:1750
排名:千里之外
原创:18篇
转载:70篇
评论:11条
(1)(1)(1)(1)(2)(2)(1)(1)(2)(1)(2)(1)(1)(1)(6)(3)(1)(10)(10)(5)(10)(10)(2)(1)(4)(1)(1)(6)(1)(1)2017年6月 移动开发大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2017年6月 移动开发大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2017年6月 移动开发大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
2017年6月 移动开发大版内专家分月排行榜第一
2013年12月 .NET技术大版内专家分月排行榜第二2013年11月 .NET技术大版内专家分月排行榜第二2013年10月 .NET技术大版内专家分月排行榜第二2013年8月 .NET技术大版内专家分月排行榜第二2013年7月 .NET技术大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。其他回答(8)
&你用JSON里面的反序列化函数,可以将此字符串反序列化为一个对象,在WATCH里面看看就知道应该自选定义这个类了。
象你这样的要定义两个类。
一个是Entry类,这个也是你最终要用的,另外一个是外面的这个包装类。
园豆:24536
楼上说得好。
JsonConvert有个反序列化方法,只需要传递一个实体type就行了。
你的实体可以如下定义:
class Test
public string form{get;set;} //保持属性和JSON的属性key一致
[JsonProperty("form")]
public string Form{get;set;} //通过特性的方式来设置映射关系
园豆:33946
园豆:33946
有一个json的插件,可以序列化和反序列化
没有对象 你跟我说啥属性
&&&&&&& public static string GetJsonValue(string json, string key)&&&&&&& {&&&&&&&&&&& try&&&&&&&&&&& {&&&&&&&&&&&&&&& JArray jsonObj = (JArray)JsonConvert.DeserializeObject(json);&&&&&&&&&&&&&&& return jsonObj[0][key].ToString();&&&&&&&&&&& }&&&&&&&&&&& catch (Exception)&&&&&&&&&&& {&&&&&&&&&&&&&&& return "";&&&&&&&&&&& }&&&&&&& }
园豆:2448
网上找的具体的工具类 & JsonReader reader = new JsonTextReader(new StringReader(&你的json格式的字符串&));reader就是json对象了,点操作可以获取属性了
直接使用JavascriptSerializer就可以了&
class ExampleObject{public string form{} public list&Entity& Entities{})
然后 &JavascriptSerializer ser=new JavascriptSerializer();
  List&ExampleObject& result=ser.serialize&List&ExampleObject&&(inputString)
规范的json能搜到无数的处理方法,不规范的,当然只能自己截取字符串解析了,正则啊,查找指定字符之类的呗,或者参考下微软解析的方法
&&&您需要以后才能回答,未注册用户请先。2009年2月 .NET技术大版内专家分月排行榜第三
2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
2017年2月 总版技术专家分月排行榜第三
2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。asp.net 2.0里也可以用JSON的使用方法
字体:[ ] 类型:转载 时间:
本人找到一份,可以在asp.net2.0里实现JSON方式传送数据的方法。但是原方法,不能在数据中带有{、}、[、]、&等,所以我做特意做了转意。
全部代码如下。& 代码如下:/// &summary& /// JSON解析类 /// &/summary& public static class JSONConvert { #region 全局变量 private static JSONObject _json = new JSONObject();//寄存器 private static readonly string _SEMICOLON = "@semicolon";//分号转义符 private static readonly string _COMMA = "@comma"; //逗号转义符 #endregion #region 字符串转义 /// &summary& /// 字符串转义,将双引号内的:和,分别转成_SEMICOLON和_COMMA /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& private static string StrEncode(string text) { MatchCollection matches = Regex.Matches(text, "\\\"[^\\\"]+\\\""); foreach (Match match in matches) { text = text.Replace(match.Value, match.Value.Replace(":", _SEMICOLON).Replace(",", _COMMA)); }
} /// &summary& /// 字符串转义,将_SEMICOLON和_COMMA分别转成:和, /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& private static string StrDecode(string text) { return text.Replace(_SEMICOLON, ":").Replace(_COMMA, ","); } #endregion #region JSON最小单元解析 /// &summary& /// 最小对象转为JSONObject /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& private static JSONObject DeserializeSingletonObject(string text) { JSONObject jsonObject = new JSONObject(); MatchCollection matches = Regex.Matches(text, "(\\\"(?&key&[^\\\"]+)\\\":\\\"(?&value&[^,\\\"]+)\\\")|(\\\"(?&key&[^\\\"]+)\\\":(?&value&[^,\\\"\\}]+))"); foreach (Match match in matches) { string value = match.Groups["value"].V jsonObject.Add(match.Groups["key"].Value, _json.ContainsKey(value) ? _json[value] : StrDecode(value)); } return jsonO } /// &summary& /// 最小数组转为JSONArray /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& private static JSONArray DeserializeSingletonArray(string text) { JSONArray jsonArray = new JSONArray(); MatchCollection matches = Regex.Matches(text, "(\\\"(?&value&[^,\\\"]+)\")|(?&value&[^,\\[\\]]+)"); foreach (Match match in matches) { string value = match.Groups["value"].V jsonArray.Add(_json.ContainsKey(value) ? _json[value] : StrDecode(value)); } return jsonA } /// &summary& /// 反序列化 /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& private static string Deserialize(string text) { text = StrEncode(text);//转义;和, int count = 0; string key = string.E string pattern = "(\\{[^\\[\\]\\{\\}]+\\})|(\\[[^\\[\\]\\{\\}]+\\])"; while (Regex.IsMatch(text, pattern)) { MatchCollection matches = Regex.Matches(text, pattern); foreach (Match match in matches) { key = "___key" + count + "___"; if (match.Value.Substring(0, 1) == "{") _json.Add(key, DeserializeSingletonObject(match.Value)); else _json.Add(key, DeserializeSingletonArray(match.Value)); text = text.Replace(match.Value, key); count++; } }
} #endregion #region 公共接口 /// &summary& /// 序列化JSONObject对象 /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& public static JSONObject DeserializeObject(string text) { _json = new JSONObject(); return _json[Deserialize(text)] as JSONO } /// &summary& /// 序列化JSONArray对象 /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& public static JSONArray DeserializeArray(string text) { _json = new JSONObject(); return _json[Deserialize(text)] as JSONA } /// &summary& /// 反序列化JSONObject对象 /// &/summary& /// &param name="jsonObject"&&/param& /// &returns&&/returns& public static string SerializeObject(JSONObject jsonObject) { StringBuilder sb = new StringBuilder(); sb.Append("{"); foreach (KeyValuePair&string, object& kvp in jsonObject) { if (kvp.Value is JSONObject) { sb.Append(string.Format("\"{0}\":{1},", kvp.Key, SerializeObject((JSONObject)kvp.Value))); } else if (kvp.Value is JSONArray) { sb.Append(string.Format("\"{0}\":{1},", kvp.Key, SerializeArray((JSONArray)kvp.Value))); } else if (kvp.Value is String) { sb.Append(string.Format("\"{0}\":\"{1}\",", kvp.Key, kvp.Value)); } else { sb.Append(string.Format("\"{0}\":\"{1}\",", kvp.Key, "")); } } if (sb.Length & 1) sb.Remove(sb.Length - 1, 1); sb.Append("}"); return sb.ToString(); } /// &summary& /// 反序列化JSONArray对象 /// &/summary& /// &param name="jsonArray"&&/param& /// &returns&&/returns& public static string SerializeArray(JSONArray jsonArray) { StringBuilder sb = new StringBuilder(); sb.Append("["); for (int i = 0; i & jsonArray.C i++) { if (jsonArray[i] is JSONObject) { sb.Append(string.Format("{0},", SerializeObject((JSONObject)jsonArray[i]))); } else if (jsonArray[i] is JSONArray) { sb.Append(string.Format("{0},", SerializeArray((JSONArray)jsonArray[i]))); } else if (jsonArray[i] is String) { sb.Append(string.Format("\"{0}\",", jsonArray[i])); } else { sb.Append(string.Format("\"{0}\",", "")); } } if (sb.Length & 1) sb.Remove(sb.Length - 1, 1); sb.Append("]"); return sb.ToString(); } #endregion } /// &summary& /// 取出JSON对象类 /// &/summary& public class JSONObject : Dictionary&string, object& { public new void Add(string key, object value) { System.Type t = value.GetType(); if (t.Name == "String") { value = JsonEncode.StrEncodeForDeserialize(value.ToString()); } base.Add(key, value); } } /// &summary& /// 取出JSON数组类 /// &/summary& public class JSONArray : List&object& { public new void Add(object item) { System.Type t = item.GetType(); if (t.Name == "String") { item = JsonEncode.StrEncodeForDeserialize(item.ToString()); } base.Add(item); } } /// &summary& /// 字符串转义,将"{"、"}"、""" /// &/summary& public class JsonEncode { public static readonly string _LEFTBRACES = "@leftbraces";//"{"转义符 public static readonly string _RIGHTBRACES = "@rightbraces";//"}"转义符 public static readonly string _LEFTBRACKETS = "@leftbrackets";//"["转义符 public static readonly string _RIGHTBRACKETS = "@rightbrackets";//"]"转义符 public static readonly string _DOUBLEQUOTATIONMARKS = "@doubleQuotationMarks";//"""转义符 #region 字符串转义 /// &summary& /// 字符串转义,将"{"、"}"、""",分别转换_LEFTBRACES、_RIGHTBRACES、_DOUBLEQUOTATIONMARKS /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& public static string StrEncodeForDeserialize(string text) { return text .Replace("{", _LEFTBRACES) .Replace("}", _RIGHTBRACES) .Replace("[", _LEFTBRACKETS) .Replace("]", _RIGHTBRACKETS) .Replace("\"", _DOUBLEQUOTATIONMARKS); } /// &summary& /// 字符串转义,将_LEFTBRACES、_RIGHTBRACES、_DOUBLEQUOTATIONMARKS,分别转换"{"、"}"、""" /// &/summary& /// &param name="text"&&/param& /// &returns&&/returns& public static string StrDecodeForDeserialize(string text) { return text.Replace(_LEFTBRACES, "{") .Replace(_RIGHTBRACES, "}") .Replace(_LEFTBRACKETS, "[") .Replace(_RIGHTBRACKETS, "]") .Replace(_DOUBLEQUOTATIONMARKS, "\""); } #endregion } &最后要说的,就是比较马烦的是,现在要取JSON里的值要用到下面的方法 代码如下:this.Label2.Text = JsonEncode.StrDecodeForDeserialize(json["domain"].ToString()); this.Label2.Text = JsonEncode.StrDecodeForDeserialize(((JSONArray)json["years"])[4].ToString());
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 适合日语初学者的动画 的文章

 

随机推荐