当前位置:编程学习 > C#/ASP.NET >>

json 这个格式怎么获取data值

row0:0是一个变动的数据,在前台是怎么获取的了,帮看一下
{“count":2,"row0",{"name":"M","data":[200,100]},"row1",:{"name":"w","data":[200,100]}} --------------------编程问答--------------------
下载一个 Newtonsoft.Json.dll  插件


然后给你贴一个我做过的方法 自己改改



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Web.Script.Serialization;
using System.Web;

namespace MicroBlog.Common.APIHelper
{
    public class Resolve
    {
        /// <summary>
        /// JSON文本转对象,泛型方法
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>指定类型的对象</returns>
        public static T JSONToObject<T>(string jsonText, HttpContext context)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(jsonText);
            }
            catch (Exception ex)
            {
                //
            }
        }

        /// <summary>
        /// 将JSON文本转换成数据行
        /// </summary>
        /// <param name="jsonText">JSON文本</param>
        /// <returns>数据行的字典</returns>
        public static Dictionary<string, object> DataRowFromJSON(string jsonText, HttpContext context)
        {
            return JSONToObject<Dictionary<string, object>>(jsonText, context);
        }
    }
}

--------------------编程问答-------------------- 参考: --------------------编程问答-------------------- eval("data.row"+i) --------------------编程问答-------------------- json.rows不可以? --------------------编程问答--------------------

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

 JObject TestjsonObj = JObject.Parse(TestjsonData);

          for (int n = 0; n < TestjsonObj["orderlist"].Count(); n++)
           {
             testorder = testorder + TestjsonObj["orderlist"][n]["order_id"].ToString() + ",";
            }
--------------------编程问答--------------------

var modelJson = "{ \"count\": 2, \"row0\": { \"name\": \"M\", \"data\": [200, 100] }, \"row1\": { \"name\": \"w\", \"data\": [200, 100]} }";
            var model = eval('(' + modelJson + ')');
            for (var i in model) {
                if (typeof (model[i]) == "number")
                    alert(model[i]);
                else if (typeof (model[i]) == "object") {
                    var mi = model[i];
                    for (var m in mi) {
                        alert(mi[m]);
                    }
                }
            }

上面是javascript 脚本中取值的情况。
对于在C#代码中取值的,如二楼所说。 --------------------编程问答-------------------- JavaScript代码:JSON序列化和反序列化 --------------------编程问答-------------------- 如果你的程序需要得到一个基本上有好的界面,例如得到 int[] 类型的data值,那么你应该先创建这个对象的class,然后使用.net framework中的json反序列化方法(2、3条语句)把这个json转成.net自定义对象实例,然后直接取出data属性。 --------------------编程问答-------------------- 选择技术方式时应该注意是否简单、直接了当。如果你的程序不是直接得到友好的 int[] 数组值,而是莫名其妙的类型结果你还需要自己再写其它的转换到int[]的方法,那么其结果就等于没有编写程序。 --------------------编程问答-------------------- 很简单啊!


下面是类似你的代码:

        <script type="text/javascript">
            var obj = { count: 2, row0: { name: '444' }, row1: { name: '4545' } };

            for (var attr in obj) {
                if (attr.indexOf('row') == 0) {
                    //当然也可以正则.
                    alert(obj[attr].name);
                }
            }
        </script> --------------------编程问答-------------------- eval("");货Ext.decode()都可以解析成数组啊.
row0[1].data[0]==200
row0[1].data[1]==100
前台直接序列化就可以了。 --------------------编程问答-------------------- 你的Json格式好像不正确啊
{
    "count": 2,
    "row0": {
        "name": "M",
        "data": [
            200,
            100
        ]
    },
    "row1": {
        "name": "w",
        "data": [
            200,
            100
        ]
    }
}
像这样才符合规范。另外可以使用http://jsonlint.com/来进行json的规范验证
--------------------编程问答--------------------
var str='{"count":2,"row0":{"name":"M","data":[200,100]},"row1":{"name":"w","data":[200,100]}}';
   var o=eval('(' + str + ')');alert(o.count);//结果2,alert(o.row0.name);//结果M,alert(o.row0.data[0]);//结果200,alert(o.row0.data[1]);//结果100
补充:.NET技术 ,  .NET技术前瞻
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,