
js和java中的json对象无法互相转换的吧(用struts2可以),可以在java中将对象转换为json字符串,传到js后,再在js中将json字符串转换成json对象 Java code Map map1 = new HashMap(); Map map2 = new HashMap(); map1put("id", 1); map1put("name", "张三"); map2put("id", 2); map2put("name","李四"); List list = new ArrayList(); listadd(map1) listadd(map2) Map jsonMap = new HashMap(); jsonMapput("jsonstr",list); //必须是map对象才能转换成json对象 JSONObject json = JSONObjectfromObject(map); //要用到json-lib-23-jdk15jar return jsontoString(); 记得引入jsonjs JScript code UserActiongetUser(function(result) { var jsonResult = JSONparse(result);//如何不行用var jsonResult=JSONparseJSON(),json版本问题 var resultList = jsonResult['jsonstr']; for(var one in resultList){ var item= resultList[one]; alert(itemid); alert(itemname); }
查看一下返回的数据格式 items[i]rectime 可能是个对象,不是字符串。
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, } 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
给你个最简单的例子:引用NewtonsoftJsondll
class Program
{
static void Main(string[] args)
{
Student student = new Student();
studentName = "guwei4037";
studentAge = 7;
string json = JsonConvertSerializeObject(student);//序列化输出Json字符串
ConsoleWriteLine(json);
Student jsonObject = JsonConvertDeserializeObject<Student>(json);
ConsoleWriteLine(stringJoin(" ", jsonObjectName, jsonObjectAge));//反序列化输出 guwei4037和7
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
递归经常碰到的问题了。
出问题的地方是 Run(temp,path);
既然是递归的调用 而且这个函数本身 有 return 值 那么 你应该在
调用 Run(temp,path);的时候 接收他的返回值
应该写成 value = Run(temp,path);
1 现在你可以设成 局部变量 var value 了。
之所以出现undefined就是因为
return value 这行代码 就执行了 1次 也就是 第一个执行 var test=Run(myjson,mypath);的时候
这个时候 value 变量还没有定义出来, value是在 最后一次执行 Run(temp,path);的时候才定义的,而需要把这个 返回出来 并接收 才有效。
2 json=json[path[0]],
这个地方 不会报错 你是写错了代码
你如果 把这个地方 写成 json=json[path[0]],
那么下面 Run(temp,path); 是不是也应该写成 Run(json,path);呢?
这样就不会报错。
3 在javascript里 数组和 对象 都是属于 引用类型的, 这是为了 节省内存空间。
其实道理简单, var a = {b:1} 这个时候 a变量里面 存储的是 保存这个 对象的内存地址,
打个比方 这个对象是一个宝箱 他是隐藏在内存的, a变量里面是打开这个宝箱的钥匙和地图
那么 b=a的时候 只是 复制了 钥匙和地图, 宝箱还是一个, 所以这个时候 a 和b 是指同一个对象的。
最后代码 修改后是这样
function Run(json,path){
if(pathlength<=1){
var value=json[path[0]]; // 如果这里换成var value=json[path[0]]结果是undefined
} else {
var temp;
json=json[path[0]]; //这里为什么不能用 json=json[path[0]]
pathsplice(0,1);
value = Run(json,path);
//argumentscallee(temp,path);
}
return value;
}
var myjson={a:1,b:{c:{e:3},d:4}};
var mypath=['b','c','e'];
var test=Run(myjson,mypath);
alert(test);
$post("/Home/qixiang", {url:“>
以上就是关于如何使用jsonobject对象解析这种类型的json数据全部的内容,包括:如何使用jsonobject对象解析这种类型的json数据、jsond框的[object Object]怎么进一步获得值、怎样将一个类转换为json对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)