问答详情
源自:3-2 自定义菜单(下)

关于将对象解析成json格式问题

public static Menu initMenu(){
		Menu menu=new Menu();
		ClickButton btn1=new ClickButton();
		btn1.setName("新生服务");
		btn1.setType("click");
		btn1.setKey("11");
		
		ViewButton btn2=new ViewButton();
		btn2.setName("暑假快乐");
		btn2.setType("view");
		btn2.setUrl("http://www.imooc.com/");
		
		ClickButton btn3=new ClickButton();
		btn3.setName("联系我们");
		btn3.setType("location_select");
		btn3.setKey("33");
		
		ClickButton btn4=new ClickButton();
		btn4.setName("小编微信");
		btn4.setType("scancode_push");
		btn4.setKey("44");
		
		Button button=new Button();
		button.setName("联系我们");
		//以下两句都运用向上类型转换
		button.setSub_button(new Button[]{btn3,btn4});
		
		menu.setButton(new Button[]{btn1,btn2,button});
		
		return menu;
	}
解析后的效果
{
    "button": [
        {
            "key": "11",
            "name": "新生服务",
            "sub_button": [],
            "type": "click"
        },
        {
            "name": "暑假快乐",
            "sub_button": [],
            "type": "view",
            "url": "http://www.imooc.com/"
        },
        {
            "name": "联系我们",
            "sub_button": [
                {
                    "key": "33",
                    "name": "联系我们",
                    "sub_button": [],
                    "type": "location_select"
                },
                {
                    "key": "44",
                    "name": "小编微信",
                    "sub_button": [],
                    "type": "scancode_push"
                }
            ],
            "type": ""
        }
    ]
}

子菜单中的clickButton独有的key和viewButton中独有的url都能解析出来,为什么?
在java中,如果将一个对象进行向上类型转换,那么就不能调用其子类中新增的成员属性和
方法。但是在json解析中,为什么还能够解析出子类中父类没有的属性呢?


提问者:helloworld12 2016-08-07 21:27

个回答

  • weibo_在路上的牧心
    2017-08-16 16:48:08

    求解,我也是同样错误,json解析出来不对

  • mokeHappy
    2016-09-11 11:22:20

    向上转型中可以解析出子类中独有的属性的。你应该去看Java的继承