用java解析json的时候程序没有报错,输出pro.MyJson@143bf3d,没有预期的json结构出来,是什么原因?
大概结构,也是同样的问题会出现。主函数:importjava.util.*;importnet.sf.json.*;publicclassJson{publicstati...
大概结构,也是同样的问题会出现。
主函数:
import java.util.*;
import net.sf.json.*;
public class Json{
public static void main(String[] args) {
String json = "{‘id’:2, ‘name ’:'onename‘,’fun‘:'true'}";
JSONObject json= JSONObject.fromObject(json);
MyJson jo= new MyJson();
jo = (MyJson)JSONObject.toBean(json, MyJson.class);
System.out.println(jo);
}}
Json:
public class MyJson {
private String name = "Json";
private int myId = 1;
private String fun = "false";
public void setName(String name){
this.name = name ;
}
public void setId(int id){
this.myId = id;
}
public void setfun(String fun) {
this.func = func ;
}
public int getId(){
return myId ;
}
public String getName(){
return name ;
}
public String getfun(){
return fun;
}
} 展开
主函数:
import java.util.*;
import net.sf.json.*;
public class Json{
public static void main(String[] args) {
String json = "{‘id’:2, ‘name ’:'onename‘,’fun‘:'true'}";
JSONObject json= JSONObject.fromObject(json);
MyJson jo= new MyJson();
jo = (MyJson)JSONObject.toBean(json, MyJson.class);
System.out.println(jo);
}}
Json:
public class MyJson {
private String name = "Json";
private int myId = 1;
private String fun = "false";
public void setName(String name){
this.name = name ;
}
public void setId(int id){
this.myId = id;
}
public void setfun(String fun) {
this.func = func ;
}
public int getId(){
return myId ;
}
public String getName(){
return name ;
}
public String getfun(){
return fun;
}
} 展开
4个回答
展开全部
我下面引用的数据来自你上面给出的. 我看了你提供的代码,main方法中有些乱,主要是你不懂原理才显得很乱..........
这么说吧: 1> JSONObject.fromObject(obj) 是把obj对象转换成json字符串格式{key:value....} 格式. 2> JSONObject.toBean(json字符串 , 对象); 是将json字符串格式数据赋值给 你指定的集合对象或Java对象, 这里它会根据你给定的json字符串里面的key的名称去找MyJson对象中与之匹配的属性名称 然后就是利用反射机制给对象赋值了,这个你就不用管理,反正是json包来做的. 简而言之就是: json格式{key : value} 的key 去找java对象的属性名,然后赋值. 不懂再问吧,我就说到这里了. 重点是先理解原理,把原理先理解好了,再试着编码,这样才会 节约时间,提高效率. 这个json包无非干的就是 1>把json字符串格式 转成 java 对象,也就把数据填入java对象中, 2> java 对象 转成 json字符串格式 罢了.
String json1 = "{'myId':2,'name':'onename','fun':'true'}";
JSONObject json = JSONObject.fromObject(json1);
System.out.println(json);
MyJson jo1 = (MyJson)JSONObject.toBean(json, MyJson.class);
System.out.println(jo1.getfun());
MyJson jo= new MyJson();
jo.setId(2);
jo.setName("onename");
jo.setfun("true");
JSONObject json11 = JSONObject.fromObject(jo);
System.out.println(json11);
这么说吧: 1> JSONObject.fromObject(obj) 是把obj对象转换成json字符串格式{key:value....} 格式. 2> JSONObject.toBean(json字符串 , 对象); 是将json字符串格式数据赋值给 你指定的集合对象或Java对象, 这里它会根据你给定的json字符串里面的key的名称去找MyJson对象中与之匹配的属性名称 然后就是利用反射机制给对象赋值了,这个你就不用管理,反正是json包来做的. 简而言之就是: json格式{key : value} 的key 去找java对象的属性名,然后赋值. 不懂再问吧,我就说到这里了. 重点是先理解原理,把原理先理解好了,再试着编码,这样才会 节约时间,提高效率. 这个json包无非干的就是 1>把json字符串格式 转成 java 对象,也就把数据填入java对象中, 2> java 对象 转成 json字符串格式 罢了.
String json1 = "{'myId':2,'name':'onename','fun':'true'}";
JSONObject json = JSONObject.fromObject(json1);
System.out.println(json);
MyJson jo1 = (MyJson)JSONObject.toBean(json, MyJson.class);
System.out.println(jo1.getfun());
MyJson jo= new MyJson();
jo.setId(2);
jo.setName("onename");
jo.setfun("true");
JSONObject json11 = JSONObject.fromObject(jo);
System.out.println(json11);
追问
我是刚刚开始这个啊,找不到比较系统的教程,就只能在网上找一些小例子自己照着慢慢写~
是不是这样理解,先将JSONObject对象转换成MyJson处理后再转换回来,输出JSONObject格式?
我还有两个问题,Json格式的数据输出顺序应该怎么控制?另外,key名字,比如说上面的name,在MyJson里面的定义参数名是name,它们是对应的关系吧?如果我想在Json里面输出key名为Name的话会有错误出现,我应该怎么去改动这个啊?
展开全部
public class Json {
public static void main(String[] args) {
String json = "{\"id\":2, \"name \":\"onename\",\"fun\":\"true\"}";
JSONObject json2 = JSONObject.fromObject(json);
MyJson jo = new MyJson();
jo = (MyJson) JSONObject.toBean(json2, MyJson.class);
System.out.println(jo);
}
}
public class MyJson {
private String name = "Json";
private int myId = 1;
private String fun = "false";
public MyJson(String name, int myId, String fun) {
super();
this.name = name;
this.myId = myId;
this.fun = fun;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMyId() {
return myId;
}
public void setMyId(int myId) {
this.myId = myId;
}
public String getFun() {
return fun;
}
public void setFun(String fun) {
this.fun = fun;
}
}
public static void main(String[] args) {
String json = "{\"id\":2, \"name \":\"onename\",\"fun\":\"true\"}";
JSONObject json2 = JSONObject.fromObject(json);
MyJson jo = new MyJson();
jo = (MyJson) JSONObject.toBean(json2, MyJson.class);
System.out.println(jo);
}
}
public class MyJson {
private String name = "Json";
private int myId = 1;
private String fun = "false";
public MyJson(String name, int myId, String fun) {
super();
this.name = name;
this.myId = myId;
this.fun = fun;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMyId() {
return myId;
}
public void setMyId(int myId) {
this.myId = myId;
}
public String getFun() {
return fun;
}
public void setFun(String fun) {
this.fun = fun;
}
}
更多追问追答
追问
你添加的构造函数没有意义啊,通过不了编译?
追答
你用的什么版本的jdk?
过不了编译,把构造函数去掉。构造函数不是重点,其他地方改了不少
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一、错误:
1.相同变量错误:
String json = "{‘id’:2, ‘name ’:'onename‘,’fun‘:'true'}";
JSONObject json= JSONObject.fromObject(json);
2.变量写错:
public void setfun(String fun) {
this.func = func ;
}
二、正确的程序
import net.sf.json.*;
public class Test {
public static void main(String[] args) {
String json = "{'id':2,'name':'onename','fun':'true'}";
MyJson stu = new MyJson();
JSONObject obj = JSONObject.fromObject(json);
stu = (MyJson)JSONObject.toBean(obj, MyJson.class);
System.out.println(stu);
}
}
public class MyJson {
private int id ;
private String name;
private String fun;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFun() {
return fun;
}
public void setFun(String fun) {
this.fun = fun;
}
public String toString(){
return this.id + ", " + this.name + ", " + this.fun;
}
}
1.相同变量错误:
String json = "{‘id’:2, ‘name ’:'onename‘,’fun‘:'true'}";
JSONObject json= JSONObject.fromObject(json);
2.变量写错:
public void setfun(String fun) {
this.func = func ;
}
二、正确的程序
import net.sf.json.*;
public class Test {
public static void main(String[] args) {
String json = "{'id':2,'name':'onename','fun':'true'}";
MyJson stu = new MyJson();
JSONObject obj = JSONObject.fromObject(json);
stu = (MyJson)JSONObject.toBean(obj, MyJson.class);
System.out.println(stu);
}
}
public class MyJson {
private int id ;
private String name;
private String fun;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFun() {
return fun;
}
public void setFun(String fun) {
this.fun = fun;
}
public String toString(){
return this.id + ", " + this.name + ", " + this.fun;
}
}
追问
不好意思,还要麻烦你,前面两错误是我简化代码的时候,改动的时候出的问题,我实际程序跟你的代码比就少了个toString()函数,加上去后,它的输出就是toString()的return的内容,并没有Json结构的数据输出,删除toString()后,结果还是pro.MyJson@baf589?是因为没有个那些key赋值吗?
追答
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
String json = "{'id':2,'name':'onename','fun':'true'}";
MyJson stu = new MyJson();
JSONObject obj = JSONObject.fromObject(json);
stu = (MyJson)JSONObject.toBean(obj, MyJson.class);
//转换成json对象
JSONObject jsonStu = JSONObject.fromObject(stu);
System.out.println(jsonStu.toString());
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
贴代码。。。
追问
我把程序改简单了一点,还是会出现同样的问题,p1.Json.MyJson@1e4905a,谢谢帮忙看看~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询