json字符串换java对象时遇到NoSuchMethodException的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuying1802028915/article/details/82556247

最近在最一个项目,项目中涉及到 json字符串 转换成 java对象,其中遇到一个问题,在这里记录一下。

首先,我是按照下面博文的方式进行转的,地址如下:

https://www.cnblogs.com/teach/p/5791029.html

文中需要 json-lib 这个第三方jar包,我用了 Maven依赖,如下:

<dependency>
		  		<groupId>net.sf.json-lib</groupId>
		  		<artifactId>json-lib</artifactId>
		  		<version>2.4</version>
		  		<classifier>jdk15</classifier>
		  	</dependency>

下面我就直接贴代码了,我先写了一个实体类:

package cn.xljy.sport;

public class StepInfoList {

	private String timestamp;
	
	private String step;
	
	

	public StepInfoList(String timestamp, String step) {
		super();
		this.timestamp = timestamp;
		this.step = step;
	}

	public String getTimestamp() {
		return timestamp;
	}

	public void setTimestamp(String timestamp) {
		this.timestamp = timestamp;
	}

	public String getStep() {
		return step;
	}

	public void setStep(String step) {
		this.step = step;
	}

	@Override
	public String toString() {
		return "StepInfoList [timestamp=" + timestamp + ", step=" + step + "]";
	}
	
	
	
}

看好了,这个实体类,写了一个有参构造函数,那么java就不会默认写无参构造了,这为下面遇到的问题,作了铺垫

接下来,我写了一个测试类,测试类如下:

package com.xljy.test.json;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.junit.Test;

import cn.xljy.sport.StepInfoList;

public class JsonTest {

	@Test
	public void test01(){
//		String jsonTest = "{\"stepInfoList\":[{\"timestamp\":1532793600,\"step\":8648},{\"timestamp\":1532880000,\"step\":7045},{\"timestamp\":1535385600,\"step\":9349}],\"watermark\":{\"timestamp\":1535469794,\"appid\":\"wx89f43ca93b86739e\"}}";
		String jsonTest = "{\"timestamp\":1532793600,\"step\":8648}";
		
		System.out.println("jsonTest:"+jsonTest);
		JSONObject jsonObj = JSONObject.fromObject(jsonTest);
		StepInfoList info = (StepInfoList) JSONObject.toBean(jsonObj, StepInfoList.class);
		System.out.println(info.toString());
	}
	
}

这里的代码都很简单,我就不多说什么了,然后一运行,报错了,报 NoSuchMethodException 我就纳闷了,为什么,找了很多文章都没有解决问题,

具体错误如下:

 

 

如上图所示,他说没有init函数,我突然想到,我没写无参构造方法,是不是因为这个原因, 之后我把无参构造函数加上,果然就不报错了,开心。。

这里记录一下这个坑,一面以后再次犯错

 

不积跬步,无以至千里

不积小流,无以成江海

展开阅读全文

没有更多推荐了,返回首页