Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

解决方法

如果转换的类中有集合,可以先定义Map<String,Class> classmap = new HashMap<String,Class>();

在classmap中put你要转换的类中的集合名,像classmap.put("data",VideoStatusData.class);

然后在toBean()的时候把参数加上,像:VideoNormalData vd1 = (VideoNormalData) JSONObject.toBean(JSONObject.fromObject(str),VideoNormalData.class,classmap);


解析代码

List<VideoStatusData> list = new LinkedList<VideoStatusData>();
list.add(new VideoStatusData("live","test"));
list.add(new VideoStatusData("live","A361_2"));
VideoNormalData vd = new VideoNormalData("get_stream_status",list);
String json = JSONObject.fromObject(vd).toString();
TcPDAta tcp = new TcPDAta("****",3230,json);
String str = tcp.Do();//返回json格式字符串 如下

//{"succ":"0","msg":"stream status result.","data":[{"app":"live","stream":"test","status":"running"},{"app":"live","stream":"A361_2","status":"stoped"}]}

Map<String,Class>();
classmap.put("data",VideoStatusData.class);
VideoNormalData vd1 = (VideoNormalData) JSONObject.toBean(JSONObject.fromObject(str),classmap);

//全部测试代码如下

package api.method;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import api.basic.TcPDAta;
import api.data.VideoNormalData;
import api.data.VideoStatusData;

public class VideoStatusrequest {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
List<VideoStatusData> list = new LinkedList<VideoStatusData>();
list.add(new VideoStatusData("live",list);
String json = JSONObject.fromObject(vd).toString();
TcPDAta tcp = new TcPDAta("*****",json);
String str = tcp.Do();
Map<String,classmap);
System.out.println(vd1.getData().get(0).getStatus());
}

}


//VideoNormalData 对象代码

package api.data;

import java.util.List;

public class VideoNormalData {

public VideoNormalData() {
}
public VideoNormalData(String action,List<VideoStatusData> params) {
this.action = action;
this.params = params;
}
private String action;
private String succ;
private String msg;
private List<VideoStatusData> params;
private List<VideoStatusData> data;

public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getSucc() {
return succ;
}
public void setSucc(String sucC) {
this.succ = succ;
}
public String getmsg() {
return msg;
}
public void setmsg(String msg) {
this.msg = msg;
}
public List<VideoStatusData> getParams() {
return params;
}
public void setParams(List<VideoStatusData> params) {
this.params = params;
}
public List<VideoStatusData> getData() {
return data;
}
public void setData(List<VideoStatusData> data) {
this.data = data;
}
}

//VideoStatusData 对象代码

package api.data;

public class VideoStatusData {

public VideoStatusData() {
}
public VideoStatusData(String app,String stream) {
this.app = app;
this.stream = stream;
}
private String app;
private String stream;
private String status;
public String getApp() {
return app;
}
public void setApp(String app) {
this.app = app;
}
public String getStream() {
return stream;
}
public void setStream(String stream) {
this.stream = stream;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}

}

//TcPDAta 代码

package api.basic; import java.io.bufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetSocketAddress; import java.net.socket; public class TcPDAta { private String hostname; privatE int port; private String content; public TcPDAta(String hostname,int port,String content){ this.hostname = hostname; this.port = port; this.content = content; } public String Do() throws Exception { String result=""; PrintWriter out = null; BufferedReader in = null; try { Socket socket = new Socket(); //socket链接指定的主机,超过10秒抛出链接不上异常 socket.connect(new InetSocketAddress(hostname,port),10000); // 得到请求的输出流对象 out = new PrintWriter(socket.getOutputStream()); // 发送请求参数 out.print(content); // flush输出流的缓冲 out.flush(); // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(socket.geTinputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } System.out.println("获取的结果为:"+result); } catch(Exception eX) { System.out.println("发送 POST 请求出现异常!"+eX); ex.printStackTrace(); throw ex; } finally { try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException eX){ ex.printStackTrace(); } } return result; } }

大佬总结

以上是大佬教程为你收集整理的使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes全部内容,希望文章能够帮你解决使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。