在处理我们的项目时,我想知道一些事情.Google的GSON API是否使用您要反序列化的JSON中的构造函数?例如:
我有一个JSON字符串,我想转换为Employee对象.Employee对象有一个构造函数,它对参数应用一些检查(例如,它的ID> 0).我们使用下面的代码来反序列化JSON.但是在将JSON反序列化为Employee时,是否甚至调用了此构造函数?
链接到GSON:https://github.com/google/gson
编辑: 所以在尝试断点后,我发现构造函数没有被调用.有人知道一种方法来调用它吗?
/**
* The GSON class to help you create and de-serialize the JSON objects.
*/
Gson gson = new Gson();
/**
* Convert JSON to an object.
* @param json The JSON to convert.
* @param cls The class to convert to.
* @return The converted JSON to object.
*/
public Object jsonToObject(String json, Class<?> cls) {
return gson.fromJson(json, cls);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Gradle中生成Jacoco测试报告.当我尝试同步我的代码时,我将收到以下错误:
错误:(56,0)无法在类型为org.gradle.api.Project的项目':app'上找到参数[build_38ehqsoyd54r3n1gzrop303so $ _run_closure4 @ 10012308]的方法jacocoTestReport().
我的build.gradle文件包含以下项目:
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.7.6.201602180812"
reportsDir = file("$buildDir/reports/jacoco")
}
jacocoTestReport {
group = "Reporting"
reports {
xml.enabled true
csv.enabled false
html.destination "${buildDir}/reports/coverage"
}
}
Run Code Online (Sandbox Code Playgroud)
当我查看文档时,我没有看到任何我做错的事情.
Gradle版本:3.3
为什么我收到此错误,我该如何解决?
我正在尝试将我的服务器上的通知发送到我的Android设备.我正在使用Firebase Cloud Messaging发送通知.我可以通过Firebase控制台发送通知,然后在手机上收到消息.但是,我正在尝试通过我的服务器发送消息,但该消息尚未生效.
我执行下面的代码时得到以下响应:
"{\" MESSAGE_ID\":58934758934758936346437}"
当我们在Firebase文档中查看Firebase的文档时,我们可以看到接收message_id意味着该消息已成功发送.我虽然没有在手机上收到它.
我确实订阅了应用程序到正确的主题.
我正在运行以下代码:
private void test(String topic) {
try {
//Setup request
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpURLConnection hc = (HttpURLConnection) url.openConnection();
hc.setDoOutput(true);
hc.setDoInput(true);
//Set request params
String message = "{\"to\": \"/topics/" + topic + "\"}";
hc.addRequestProperty("Content-Type", "application/json");
hc.addRequestProperty("Authorization", "key=SECRET");
DataOutputStream dos = new DataOutputStream(hc.getOutputStream());
dos.writeBytes(message);
dos.close();
//Get Response
InputStream is = hc.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version …Run Code Online (Sandbox Code Playgroud) 今天我正在申请一个学校项目.我们的Bootsfaces没有任何问题,但突然间我似乎无法显示组件(见图).我不知道是什么导致了这种意想不到的行为,因为它之前有效.没有任何内容更改为.xhtml页面.Chrome控制台和Payara控制台中的错误日志均提供0错误.
我正在使用Payara 5.181和Java EE 7.
编辑:
删除Payara服务器中的"生成"文件夹并重新启动PC似乎可以解决此问题,但过了一段时间(无法准确再现原因)页面再次变为空白.
.xhtml文件
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:b="http://bootsfaces.net/ui"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Kies je cartracker</title>
<h:outputStylesheet name="default.css" library="css" />
</h:head>
<h:body>
<h1>Kies je cartracker:</h1>
<b:dataTable value="#{tourmanager.allCartrackers}"
var="tracker">
<b:dataTableColumn>
<f:facet name="header">
<h:outputText value="Vehicle" />
</f:facet>
<h:outputText value="#{tracker.vehicle.serieNr}" />
</b:dataTableColumn>
<b:dataTableColumn>
<f:facet name="header">
<h:outputText value="Kies cartracker" />
</f:facet>
<h:form>
<b:commandButton action="#{tourmanager.pickCartracker(tracker)}"
value="Pick car" >
</b:commandButton>
</h:form>
</b:dataTableColumn>
</b:dataTable>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
的pom.xml
<dependency>
<groupId>net.bootsfaces</groupId>
<artifactId>bootsfaces</artifactId>
<version>1.2.0</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
web.xml中
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> …Run Code Online (Sandbox Code Playgroud)