12
2012
04

.ashx接口内容Json对象读取数据并分离

本周工作和学习的内容是.ashx格式的接口文件读取,读取.ashx文件接口也有很多种方法,我主要找到两种方法:第一种是通过读取.ashx接口中的内容,然后通过字符串的Replace方法替换方式把读到的内容进行分离,这种方法比较笨拙,但也是可以正确获取.ashx接口内容的方法;第二种是使用Newtonsoft.Json的JsonReader进行读取数据,同样适用Replace进行分离读取到的字符串。

第一种直接读取.ashx内容,使用替换方式分离内容:
        private void button3_Click(object sender, EventArgs e)
        {
            string context = "{\r\n \"page\": 1,\r\n \"pages\": 1,\r\n \"total\": 1,\r\n \"rows\": [\r\n    {\r\n      \"id\": \"1001\",\r\n      \"cell\": [\r\n        \"1\",\r\n        \"2\",\r\n        \"3\",\r\n        \"4\",\r\n        \"5\",\r\n        \"6\",\r\n        \"7\",\r\n        \"8\",\r\n        \"9\",\r\n        \"10\",\r\n        \"11\"\r\n      ]\r\n    }\r\n ]\r\n}";
            try
            {
                JObject Sobject = JObject.Parse(context);   //要再头加上using Newtonsoft.Json.Linq;,没有改类库去下载Newtonsoft.Json.Linq.dll
                string id = ""//读取的id
                JToken jToken = null;
                foreach (JObject str in (JArray)Sobject["rows"])
                {
                    id = str["id"].ToString().Trim('\"'); //读取id
                    jToken = str["cell"]; //读取cell
                }
                ss = jToken.ToString();
                ss = ss.Replace("[\r\n \"", "").Replace("\"\r\n]", "").Replace("\",\r\n \"", "$"); //将context的内容替换为只有$分割cell中的各列
                string[] ff = ss.Split('$');   //变为数组,然后去读取数组中的数据赋给你要接收后的实体类或者文本框
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                context = "";
            }
        }
 
第二种使用Newtonsoft.Json.Linq的JsonReader读取内容:
        private void button3_Click(object sender, EventArgs e)
        {
            string context = "{\r\n \"page\": 1,\r\n \"pages\": 1,\r\n \"total\": 1,\r\n \"rows\": [\r\n    {\r\n      \"id\": \"1001\",\r\n      \"cell\": [\r\n        \"1\",\r\n        \"2\",\r\n        \"3\",\r\n        \"4\",\r\n        \"5\",\r\n        \"6\",\r\n        \"7\",\r\n        \"8\",\r\n        \"9\",\r\n        \"10\",\r\n        \"11\"\r\n      ]\r\n    }\r\n ]\r\n}";
            try
            {
                TextReader txtReader = new StringReader(context.ToString()); //对context处理
                JsonReader jsonReader = new JsonTextReader(txtReader); //使用JsonReader进行读取数据
                string readResult = "";
                while (jsonReader.Read())
                {
                    if (jsonReader.TokenType == JsonToken.StartArray) //判断格式为JsonToken.StartArray的cell
                    {
                        while (jsonReader.Read()) //读取cell里面的内容
                        {
                            if (jsonReader.TokenType == JsonToken.String) //读取JsonToken.String的值
                                readResult += (string)jsonReader.Value + "$"//使用$分隔读取的数据
                        }
                    }
                }
                string[] ff = ss.Split('$');   //变为数组,然后去读取数组中的数据赋给你要接收后的实体类或者文本框
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                context = "";
            }
        }
« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。