json 这个格式怎么获取data值
row0:0是一个变动的数据,在前台是怎么获取的了,帮看一下{“count":2,"row0",{"name":"M","data":[200,100]},"row1",:{"name":"w","data":[200,100]}} --------------------编程问答--------------------
下载一个 Newtonsoft.Json.dll 插件
然后给你贴一个我做过的方法 自己改改
--------------------编程问答-------------------- 参考: --------------------编程问答-------------------- eval("data.row"+i) --------------------编程问答-------------------- json.rows不可以? --------------------编程问答--------------------
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);
}
}
}
--------------------编程问答--------------------
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技术前瞻