用json时的一个问题,

假设有一个Person类,
[code="java"]
public class Person{
private java.util.Date birthday;

 // settor and gettor methods.....

}
[/code]

现在客户端那边传来如下的json规则的字符串String personJson = "{birthday:\"06/28/2008 17:00:00\"}",要用

JSONOjbect.toBean(JSONObject.from(personJson ),Person.class)方法来获得相应的Person实例时就出问题了,报错如下:
[code="java"]
2008-6-19 13:57:39 net.sf.json.JSONObject morphPropertyValue
警告: Can't transform property 'birthday' from java.lang.String into java.util.Date. Will register a default Morpher
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.class' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.date' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.day' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.hours' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.minutes' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.month' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.seconds' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.time' does not exist. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
信息: Property 'java.util.Date.timezoneOffset' has no write method. SKIPPED.
2008-6-19 13:57:39 net.sf.ezmorph.bean.BeanMorpher morph
警告: Property 'java.lang.String.year' does not exist. SKIPPED.
Person's brithday: Thu Jun 19 13:57:39 CST 2008

[/code]

这个怎么解决?

以下是我做实验用的Java代码:

[code="java"]
package json;

import java.util.Date;

import net.sf.json.JSONObject;

public class Person {
private Date birthday;

public Date getBirthday() {
    return birthday;
}

public void setBirthday(Date birthday) {
    this.birthday = birthday;
}

public static Person getInstance(String jsonVale) {
    return (Person)JSONObject.toBean(JSONObject.fromObject(jsonVale),Person.class);
}

public static void main(String[] args) {
    String personJson = "{birthday:\"06/28/2008 17:00:00\"}";

    Person p = getInstance(personJson);

    System.out.println("Person's brithday: "+ p.getBirthday());
}

}

[/code]

[b]问题补充:[/b]
To ham:
你所说的那个方案是针对 bean --> Json的,而现在的问题是从Json到Bean.
[b]问题补充:[/b]
多谢各位的帮忙,现在这个问题解决了,也就是在toBean前加一句话:JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"MM/dd/yyyy HH:mm:ss"}) );来配置记下Date转化时的Morpher就OK了,大家有兴趣的话可以试下.

Thanks a lot!

8个回答

到网上Google了一下午,一点相关的资料都没找到.

写了一个傻办法,先将就着用吧:
[code="java"]

package test;

import java.util.Date;

import net.sf.json.JSONObject;

public class Person {

private Date birthday;

public Date getBirthday() {
    return birthday;   
}   

public void setBirthday(Date birthday) {   
    this.birthday = birthday;   
}   

public static Person getInstance(String jsonValue) {
    JSONObject obj=JSONObject.fromObject(jsonValue);

    //将birthday属性获取到
    String strDate=(String)obj.get("birthday");
    Date newDate=null;

    //设置日期转换的格式
    java.text.DateFormat formate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
        newDate = formate.parse(strDate);
    }catch (Exception e) {
        e.printStackTrace();
    }
    //移除原有的birthday属性
    obj.remove("birthday");
    //将日期类型的birthday放到obj中
    obj.put("birthday", newDate);
    return (Person)JSONObject.toBean(obj,Person.class);
}

public static void main(String[] args) {
    String personJson = "{birthday:\"2008-06-28 17:00:00\"}";

    Person p = getInstance(personJson);

    System.out.println("Person's brithday: "+p.getBirthday());   
}

}

[/code]

输出结果为:
[quote]
Person's brithday: Sat Jun 28 17:00:00 CST 2008
[color=red]2008-6-20 16:45:11 net.sf.json.JSONObject toBean
警告: Property 'day' has no write method. SKIPPED.
2008-6-20 16:45:11 net.sf.json.JSONObject toBean
警告: Property 'timezoneOffset' has no write method. SKIPPED.[/color]
[/quote]

那两个警告好像是因为在toBean()的时候,它把Date对象也当成了一个JSONObject对象进行处理.由于没有set方法而出现的.

我对java对json的操作也只是处于一知半解的状态,如果写的代码太幼稚.楼主表笑... :oops:

这是因为你在json中的字符串类型的"06/28/2008 17:00:00"
在java中没有办法直接转换成为Date类型的数据.因而报出了异常

你需要通过JsonValueProcessor类,进行日期的转换格式.

详细的内容可以参见:
[url]http://www.iteye.com/topic/169094[/url]
里面有详细代码.

汗...地址搞错鸟.

解决的方法可以参见:
[url]http://bolingsky.blog.sohu.com/74165282.html[/url]
里面有详细的代码.

要不你就手工处理下personJson里的时间日期部分``

用反射逐个调用

[code="java"]
for (Object object : jsonObject.entrySet()) {
Map.Entry entry = (Map.Entry) object;
String propertyName = entry.getKey().toString();
String propertyValue = entry.getValue().toString();

BeanUtils.setBeanPropertyByName(entity, propertyName, propertyValue);
}
[/code]

[color=red]{birthday:\"06/28/2008 17:00:00\"}[/color]Wrong
[color=green]{\"birthday\":\"06/28/2008 17:00:00\"}[/color]right

上面的BeanUtils.setBeanPropertyByName也说明下:

[code="java"]
public class BeanUtils {
public static void setBeanPropertyByName(T entity, String propertyName, String propertyValue) {
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(propertyName, entity.getClass());
Class propertyType = propertyDescriptor.getPropertyType();
Method setMethod = propertyDescriptor.getWriteMethod();
if (propertyType == java.sql.Date.class) {
setMethod.invoke(entity, DateUtils.getSqlDateFromString(propertyValue, "yyyy-MM-dd HH:mm:ss"));
} else ...

}
}
[/code]

用mozilla的rhino库,如果jdk1.6的话已经自带了。

执行json的脚本,然后构造你的Bean。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于JSON的一个问题,.forEach(a ->
Arrays.asList(annos).forEach(a -> { if (a instanceof JSON) { JSON json = (JSON) a; jsonSerializer.filter(json.type(), json.include(), json.filter()); } }); 最近看到一篇关于JSON的博客,请问.forEach(a -> 这是什么意思呢 在线求解
Json 页面输出的问题!!!
我用的是SSM 然后我现在在action 中有个Json ,里面是一个集合,现在我要在页面能获取到,怎么写? public String getAllMission(){ mList=aService.getA();//现在我要把这个集合放到JSON里面去,下面代码怎么写? return SUCCESS; }
Json传送数据的问题 Sturct2
在做web作业的时候想用json传送数据 server端用的是Java SSH框架, 按照网上的方法使用了eclipse报了这个错: 严重: Servlet.service() for servlet [default] in context with path [/ResearchSys] threw exception [Filter execution threw an exception] with root cause java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at org.apache.struts2.json.SerializationParams.<init>(SerializationParams.java:57) at org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:214) at org.apache.struts2.json.JSONResult.execute(JSONResult.java:177) at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) ... 其中struct.xml中是这样写的: ![图片说明](https://img-ask.csdn.net/upload/201507/30/1438192581_224862.png) Action中是这样写的: ![图片说明](https://img-ask.csdn.net/upload/201507/30/1438192648_826403.png) jsp的调用如下: ![图片说明](https://img-ask.csdn.net/upload/201507/30/1438192714_131812.png) 想请问一下问题出在哪里。。 如果找不出问题能不能告诉我json应该怎么用,谢谢!
使用JSON.toJSONString处理过后的list出现问题
在servlet里面,获得了一个list集合,通过JSON.toJSONString处理过后,list里面的日期类型变为一串很长的数字,该怎么处理?
关于安卓json解析中的一个问题
JsonParser类解析json现在开发还用么?? ![图片说明](https://img-ask.csdn.net/upload/201707/31/1501511270_472848.jpg) 和直接 ``` ArrayList<Category> categories = (ArrayList<Category>) GsonUtil.parseJsonToList(response, new TypeToken<List<Category>>(){}.getType() ); ``` 和这个有区别么?? 工具类的代码 ``` public static List<?> parseJsonToList(String json, Type type) { Gson gson = new Gson(); List<?> list = gson.fromJson(json, type); return list; } ```
关于Android方面的json解析问题
"[{\"ID\":9627,\"FullNumber\":\"IV\",\"TaxaTypeName\":\"Division\",\"Number\":\"IV\",\"Heading\":\" Criminal Law and Procedure and Prisoners.\"}] [{\"ID\":9628,\"FullNumber\":\"22\",\"TaxaTypeName\":\"Title\",\"Number\":\"22\",\"Heading\":\" Criminal Offenses and Penalties.\"}, {\"ID\":10240,\"FullNumber\":\"23\",\"TaxaTypeName\":\"Title\",\"Number\":\"23\",\"Heading\":\" Criminal Procedure.\"}]" 这种形式的json格式怎么解析啊?json字符串里面是两个json数组,json数组中是两个json对象,都没有key值怎么解析的?
请教一个xml转json的问题
xml转json时,一个list节点下面正好只有一个元素怎么办? 不就转成 json对象 了么?
Spring mvc中将bean转json的过程中Date问题
Spring mvc中将bean转json的过程中,date格式(yyyy-MM-dd HH:mm:ss)如果秒的最后一位为0,转后后前端页面得到的格式为yyyy-MM-dd,​ HH:mm:ss这部分就没有了;例如Bean中的日期为2015-5-12 13:22:20,前端页面得到的json结果为2015-5-12 ,​如果2015-5-12 13:22:21,前端页面得到的json就是正常的​2015-5-12 13:22:21​
json解析格式问题。。。。。
如何解析对象嵌套对象的json数据格式,或者说怎么转化为json数组
json_decode解析的问题
![如图返回值](https://img-ask.csdn.net/upload/201504/10/1428652653_548893.png) $jsoninfo = json_decode($result); $errcode = $jsoninfo -> errcode; //正常 $errmsg = $jsoninfo -> errmsg; //正常 $card = $jsoninfo -> card; $cardid = $card -> card_id; //null $cardid应该怎么取啊,取出来为空,上面的操作不行,求助各位!
用jmeter测试json时请求失败并报错,但是用postman却没问题,这是什么原因呢?
问题: 用jmeter测试json时,如果数据在数据库存在的话就请求成功,但返回“该用户已存在”的提示,如果数据在数据库不存在的话就请求失败并且报错。报错:EL1008E: Property or field 'timestamp' cannot be found on object of type 'java.util.HashMap' - maybe not public? 1.这个是我jmeter的操作 ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547029475_922832.png) ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547029531_658460.png) 2.数据在数据库存在的话就请求成功,但返回“该用户已存在”的提示 ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547029891_25850.png) 3.数据在数据库不存在的话就请求失败并且报错(只是修改了code的值(数据库唯一标识的值)) ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547029999_959120.png) 然后把报错的body复制到postman,显示操作成功 ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547030094_44281.png) body ``` { "code": "21", "name": "1", "sex": "1", "type": "1", "birthday": "2018-11-11 12:00:00", "nation": "1", "nativePlace": "1", "nativeAddress": "1" } ```
解析过后的json取值问题
解析过后的json,在循环取值的时候报错,用JSONArray jsonArrayIn = jsonArray.getJSONArray(i)时候报JSONArray[33] is not a JSONArray, ,我试着用JSONObject jons = jsonArray.getJSONObject(i);又说却 JSONArray[33] is not a JSONObject,,此刻我凌乱了,求指导
请教各位大佬一个问题,jsp中action="success.json" 是什么意思?
请教各位大佬一个问题,jsp中action="success.json" 是什么意思?action又会跳转到哪里,在自己项目里找不到具体的代码,怎么能定位到? ``` <form id="forcePwd_updateForm" method="post" action="success.json"> </form> ```
json格式问题
{ "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ "imageFieldName": "upfile", /* 提交的图片表单名称 */ "imageMaxSize": 2048000, /* 上传大小限制,单位B */ "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ "imageCompressEnable": true, /* 是否压缩图片,默认是true */ "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ "imageUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 图片访问路径前缀 */ "imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ /* {time} 会替换成时间戳 */ /* {yyyy} 会替换成四位年份 */ /* {yy} 会替换成两位年份 */ /* {mm} 会替换成两位月份 */ /* {dd} 会替换成两位日期 */ /* {hh} 会替换成两位小时 */ /* {ii} 会替换成两位分钟 */ /* {ss} 会替换成两位秒 */ /* 非法字符 \ : * ? " < > | */ /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ /* 涂鸦图片上传配置项 */ "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ "scrawlUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 图片访问路径前缀 */ "scrawlInsertAlign": "none", /* 截图工具上传 */ "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ /* 抓取远程图片配置 */ "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ "catcherFieldName": "source", /* 提交的图片列表表单名称 */ "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "catcherUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 图片访问路径前缀 */ "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ /* 上传视频配置 */ "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ "videoFieldName": "upfile", /* 提交的视频表单名称 */ "videoPathFormat": "/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "videoUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 视频访问路径前缀 */ "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ "videoAllowFiles": [ ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ /* 上传文件配置 */ "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ "fileFieldName": "upfile", /* 提交的文件表单名称 */ "filePathFormat": "/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "fileUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 文件访问路径前缀 */ "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ "fileAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ], /* 上传文件格式显示 */ /* 列出指定目录下的图片 */ "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ "imageManagerListPath": "/ueditor/jsp/upload/image/", /* 指定要列出图片的目录 */ "imageManagerListSize": 20, /* 每次列出文件数量 */ "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ /* 列出指定目录下的文件 */ "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ "fileManagerListPath": "/ueditor/jsp/upload/file/", /* 指定要列出文件的目录 */ "fileManagerUrlPrefix": "http://127.0.0.1:8080/mrbbs", /* 文件访问路径前缀 */ "fileManagerListSize": 20, /* 每次列出文件数量 */ "fileManagerAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ] /* 列出的文件类型 */ } json文件搞不懂哪里出错了,怎么修改,望大神指点 解析后第2行解析错误: ...me": "uploadimage", /* 执行上传图片的action名称 * -----------------------^ 期望是 'STRING'
客户端显示json的问题。
服务器返回json类型的数据给客户端,客户端接收的数据returnedData,通过returnedData.key得不到json数据相应key的值。请各位路过的帮小女子看一下这个问题出在哪里了,是在是找不出来了 。 <script type="text/javascript"> $(function() { $("#button1").click(function() { $.post("getGsonAction.action",{name: $("#name").val()}, function(returnedData, status) { var people = returnedData; alert(returnedData); var id = people.id; var name = people.name; var age = people.age; var address = people.address; var html = "<table width='60%' border='1' align='center'><tr><th>id</th><th>name</th><th>age</th><th>address</th><tr align='center'><td>" + id + "</td><td>" + name + "</td><td>" + age + "</td><td>" + address + "</td></tr></table>"; $("#theBody table:eq(0)").remove(); $("#theBody").append(html); }); }); }); </script> public class GetGsonAction extends ActionSupport { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { People people = new People(); people.setId(1); people.setName(name); people.setAge(30); people.setAddress("beijing"); HttpServletResponse response = ServletActionContext.getResponse(); Gson gson = new Gson(); String result = gson.toJson(people); System.out.println(result); response.setHeader("pragma","no-cache"); response.setHeader("cache-control", "no-cache"); response.setContentType("application/json"); PrintWriter out = response.getWriter(); out.println(result); return null; } }
关于编辑json字符串的问题
这样一个json字符串怎么在代码中把result那一级个去掉?(就是把字符串"result":{}去掉) { "jsonrpc":"2.0", "id":"10", "result": { "resultList": [{ "name": "1", "agentName": "sdfsf", "address": "Ed Spencer", "workMethod": "22", "phone": "blue", "mobilePhone": "sdfdsf", "workLicenseId": "sdfsdf", "workLicenseIssueDate": "2012-03-23", "workLicenseInvalidateDate": "2015-03-23" }, { "name": "2", "agentName": "sdfsf", "address": "Ed Spencer", "workMethod": "22", "phone": "blue", "mobilePhone": "sdfdsf", "workLicenseId": "sdfsdf", "workLicenseIssueDate": "2012-03-23", "workLicenseInvalidateDate": "2015-03-23" }, { "name": "3", "agentName": "sdfsf", "address": "Ed Spencer", "workMethod": "22", "phone": "blue", "mobilePhone": "sdfdsf", "workLicenseId": "sdfsdf", "workLicenseIssueDate": "2012-03-23", "workLicenseInvalidateDate": "2015-03-23" }] } }
关于json与echarts的问题
第一段代码如下 ``` var data = ${fns:toJson(tblTemperature.tblTemperatureHistoryList)}; ``` 返回数组形式的是 ``` var data = [{"id":"0000000000000000000000000000000000000000000000000000000000000014","isNewRecord":false,"remarks":"电源柜标签10","tagId":"E281CA0020000000000002DA","addTime":"2017-04-26 09:46:16","temperature":"30.0","tblTemperature":{"id":"1c3782ea07514577b04c1a87c3d824f0","isNewRecord":false}},{"id":"0000000000000000000000000000000000000000000000000000000000000019","isNewRecord":false,"remarks":"电源柜标签10","tagId":"E281CA0020000000000002DA","addTime":"2017-04-26 12:52:11","temperature":"40.0","tblTemperature":{"id":"1c3782ea07514577b04c1a87c3d824f0","isNewRecord":false}},{"id":"0000000000000000000000000000000000000000000000000000000000000020","isNewRecord":false,"remarks":"电源柜标签10","tagId":"E281CA0020000000000002DA","addTime":"2017-04-26 13:20:28","temperature":"20.0","tblTemperature":{"id":"1c3782ea07514577b04c1a87c3d824f0","isNewRecord":false}},{"id":"0000000000000000000000000000000000000000000000000000000000000027","isNewRecord":false,"remarks":"电源柜标签10","tagId":"E281CA0020000000000002DA","addTime":"2017-04-27 14:17:09","temperature":"50.0","tblTemperature":{"id":"1c3782ea07514577b04c1a87c3d824f0","isNewRecord":false}},{"id":"0000000000000000000000000000000000000000000000000000000000000040","isNewRecord":false,"remarks":"电源柜标签10","tagId":"E281CA0020000000000002DA","addTime":"2017-05-02 15:59:34","temperature":"70.0","tblTemperature":{"id":"1c3782ea07514577b04c1a87c3d824f0","isNewRecord":false}}]; ``` 我该如何把addTime和temperature放进Echarts的data中? ``` var temperature=[];//温度 var addTime=[];//获取时间 $.ajax({ type : "post", async : true,//异步请求 dataType : "json", url:"${ctx}/temperaturehistory/tblTemperature/axisTem?id=${tblTemperature.id}", data:{}, success : function(result) { temperature.push(result.temperature); addTime.push(result.addTime); myChart.setOption({ xAxis : [ { data : addTime } ], series : [ { data : temperature } ] }) } }); myChart.setOption(option); ``` 整个jsp也面 ``` <script type="text/javascript"> function addRow(list, idx, tpl, row){ $(list).append(Mustache.render(tpl, { idx: idx, delBtn: true, row: row })) } </script> </head> <body> <div id="main" style="width: 1500px; height: 600px;"></div> <div class="control-group"> <label class="control-label">子:</label> <div class="controls"> <table id="contentTable" class="table table-striped table-bordered table-condensed"> <thead> <tr> <th class="hide"></th> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <shiro:hasPermission name="temperaturehistory:tblTemperature:edit"> <th width="10">&nbsp;</th> </shiro:hasPermission> </tr> </thead> <tbody id="tblTemperatureHistoryList"> </tbody> </table> <script type="text/template" id="tblTemperatureHistoryTpl">//<!-- <tr id="tblTemperatureHistoryList{{idx}}"> <td class="hide"> <input id="tblTemperatureHistoryList{{idx}}_id" name="tblTemperatureHistoryList[{{idx}}].id" type="hidden" value="{{row.id}}"/> <input id="tblTemperatureHistoryList{{idx}}_delFlag" name="tblTemperatureHistoryList[{{idx}}].delFlag" type="hidden" value="0"/> </td> <td> <input id="tblTemperatureHistoryList{{idx}}_tagId" name="tblTemperatureHistoryList[{{idx}}].tagId" type="text" value="{{row.tagId}}" maxlength="64" class="input-small "/> </td> <td> <input id="addTime" name="tblTemperatureHistoryList[{{idx}}].addTime" type="text" readonly="readonly" maxlength="20" class="input-medium Wdate " value="{{row.addTime}}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:false});"/> </td> <td> <input id="temperature" name="tblTemperatureHistoryList[{{idx}}].temperature" type="text" value="{{row.temperature}}" class="input-small "/> </td> <td> <textarea id="tblTemperatureHistoryList{{idx}}_remarks" name="tblTemperatureHistoryList[{{idx}}].remarks" rows="4" maxlength="255" class="input-small ">{{row.remarks}}</textarea> </td> <shiro:hasPermission name="temperaturehistory:tblTemperature:edit"><td class="text-center" width="10"> {{#delBtn}}<span class="close" onclick="delRow(this, '#tblTemperatureHistoryList{{idx}}')" title="删除">&times;</span>{{/delBtn}} </td></shiro:hasPermission> </tr>//--> </script> <script type="text/javascript" src="/jeesite/static/js/echarts/echarts.js"></script> <script type="text/javascript" src="/jeesite/static/jquery/jquery-1.8.3.js"></script> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main')) option= { color: ['#ff3d3d', '#00a0e9', '#f603ff','#00b419','#5f52a0'], tooltip: { trigger: 'axis' }, legend: { x: 'left', padding: [10, 20,0,20], data:['温度'], }, grid: { left: '0', right: '3%', bottom: '3%', top:'13%', containLabel: true }, xAxis: { type: 'category', boundaryGap: false, splitLine:{//网格线 show: true, lineStyle:{ color:['#b1b1b1'], type:'dashed' } }, data: [] }, yAxis: { splitLine:{//网格线 show: true, lineStyle:{ color:['#b1b1b1'], type:'dashed' } } }, series: [ { name:'温度', type:'line', data:[], label: { normal: { show: true, position: 'top'//值显示 } } } ] }; var datai = ${fns:toJson(tblTemperature.tblTemperatureHistoryList)}; var temperature=[];//温度 var addTime=[];//获取时间 $.ajax({ type : "post", async : true,//异步请求 dataType : "json", data:{}, success : function(result) { for(var i =0;i<datai.length;i++){ for(var j=0;j<data[i].length;j++){ temperature.push(datai[i][j].temperatuer); addTime.push(datai[i][j].addTime); } } myChart.setOption({ xAxis :{ data:addTime }, series : { data:temperature } }) } }); myChart.setOption(option); //打印数据,用于测试数据是否得到 console.warn(temperature, addTime); </script> <script type="text/javascript"> var tblTemperatureHistoryRowIdx = 0, tblTemperatureHistoryTpl = $("#tblTemperatureHistoryTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,""); $(document).ready(function() { alert(1) var data = ${fns:toJson(tblTemperature.tblTemperatureHistoryList)}; for (var i=0; i<data.length; i++){ addRow('#tblTemperatureHistoryList', tblTemperatureHistoryRowIdx, tblTemperatureHistoryTpl, data[i]); tblTemperatureHistoryRowIdx = tblTemperatureHistoryRowIdx + 1; } }); </script> </div> </div> </body> ```
使用Gson框架制作Json时遇到的字符转义问题
第一次做后台遇到一个Json格式的问题,刚开始得到的JsonArray格式如下: [{"id":8,"account":"123456","password":"123456","name":"啦啦啦"},{"id":9,"account":"10086","password":"123456","name":"哈哈哈"}] 在返回给前端时需要弄成一个JsonObject,于是我写了一个实体类ReturnData,里面只有一个String data,然后使用Gson中的方法(json就是上面的jsonArray): ``` ReturnData returnData = new ReturnData(json); String gsonResult = gson.toJson(returnData); ``` 但是在转换时,Gson自动帮我添加了转义字符,最后结果如下: {"data":"[{\"id\":8,\"account\":\"123456\",\"password\":\"123456\",\"name\":\"啦啦啦\"} 有没有大神知道为什么会自动出现这样的转义字符,以及好一点的解决办法。
.net json反序列化问题求指教
{"data":[ { "Account.ID": XXX, "Account.Name": "XXXXX", "Account.contactname": "XXXX", "Account.QQ": "XXXXX"}]} serialize.Deserialize<XXXX>反序列化 可是json中的名字有“.” 可是定义XXXX类属性字段的时候不能有"."求这个XXXX类中的字段怎么定义 求指教啊。
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问