gson – 在序列化java pojo时包含类名 – > json

使用GSON如何将我的List的类名附加到输出的json字符串? 我已经浏览了api并且错过了任何参考来做这件事。 我在我的实际代码中使用GsonBuilder ,但也没有看到任何选项。 public class Person { String name; public Person(String name){ this.name = name; } public static void main(String [] args){ Person one = new Person(“Alice”); Person two = new Person(“Bob”); List people = new ArrayList(); people.add(one); people.add(two); String json = new Gson(people); } } 这给出了以下输出: json = [{“name”:“Alice”},{“name”:“Bob”}] 如何实现以下输出? 或类似的东西。 json = […]

从JAR内部运行* .exe文件

我有一个巨大的JAR文件,我用Maven Shade插件创建。 我用java -jar foo.jar运行它,我的UI打开了。 现在我想执行*.exe文件,该文件也在该JAR文件中,我该怎么做? 我尝试将exe放到我的类路径并从那里运行它,但在尝试后我发现classpath实际上是我的JAR所在的位置。 有什么建议么? 在这里找到了这个东西,但这真的是最好的解决方案吗? 好像很多工作,我想我在这里有不同的情况,因为我可以自己定义exe的位置,JAR是由我创建的。 运行包装在jar中的exe 为什么我需要这个? 我想给用户一个文件可执行文件,他可以运行,但我的程序使用* .exe。 我应该把exe放在我的jar旁边,并且会有2个文件或者有我的要求的解决方案吗?

如何更新primefaces dataTable中的特定单元格

我正在创建一个充满输入字段的动态数据表。 有时,当用户在某些输入中插入值时,应更新特定单元格,并且仅更新此单元格。 我认为这可能很简单,但却没有成功。 我要更新的单元格是“valor total”,当其他两个单元格的值发生变化时,应更新此单元格: EDITED 我试过f:带有完整id的ajax并得到“具有id的组件:lancamentoNF:popupLancamentoNF:tabelaItensNF:0:找不到valorTotalItem”。 更改为p:ajax并且没有错误发生但它没有更新!! … (some columns) … (more columns) 当我用完整的id更新panelGroup“painelItensNF”时,它可以正常工作,但是焦点丢失了,用户应该找到他正在努力继续的输入…

将Jackson ObjectMapper类设置为不使用双重科学记数法

我正在为JsonSchema使用库com.fasterxml.jackson库,我正在创建一个IntegerSchema对象,当我使用下面的代码设置整数模式的范围时: main(){ IntegerSchema intSchema = new IntegerSchema(); // setMaximum accepts Double object intSchema.setMaximum(new Double(102000000)); // setMaximum accepts Double object intSchema.setMinimum(new Double(100)); printJsonSchema(intSchema); } public void printJsonSchema(JsonSchema schema){ ObjectMapper mapper = new ObjectMapper(); try { logger.info(mapper.writeValueAsString(schema)); } catch (JsonProcessingException e) { throw new IllegalStateException(e); } } 当我使用ObjectMapper将IntegerSchema转换为字符串时得到以下响应: {“type”:”integer”,”maximum”:1.02E8,”minimum”:100.0} 最大值和最小值将转换为科学计数法。 但是我需要非科学记谱法输出如下: {“type”:”integer”,”maximum”:102000000,”minimum”:100} 我无法更改IntegerSchema类。 请建议如何在不扩展IntegerSchema类的情况下获得所需的输出? 提前致谢

从SQLite读取数据,其中列名称包含空格

我有一个名为“条件名称”的coulmn名称(.sql文件已从服务器生成) 但在android中我从该表读取数据时遇到exception。 12-24 14:34:00.870:W / System.err(269):android.database.sqlite.SQLiteException:没有这样的列:condition :, 编译时: SELECT条件,类别,子类别,条件名称,本地路径,远程路径,标题,content_type FROM库WHERE category =? 它无法识别整个表名并在空间中突破。 如果您有任何想法,请帮助我。

加载XML配置文件时出现Log4j2错误

我正在尝试使用嵌入在我的Java应用程序中的Log4j2的XML配置文件,但是不起作用。 代码: ConfigurationSource source = new ConfigurationSource(Main.class.getResourceAsStream(“/in/gunbound/prelauncher/server/log4j2/log4j2.xml”)); ConfigurationFactory factory = (ConfigurationFactory) XMLConfigurationFactory.getInstance().getConfiguration(source); ConfigurationFactory.setConfigurationFactory(factory); 错误: 线程“main”中的exceptionjava.lang.ClassCastException:org.apache.logging.log4j.core.config.XMLConfiguration无法强制转换为in.gunbound.prelauncher.server中的org.apache.logging.log4j.core.config.ConfigurationFactory .Main.main(Main.java:62)

单击时取消选择javafx ListView上的项目

我在JavaFX应用程序中使用ListView控件。 它被设置为MULTIPLE选择模式。 我知道作为用户,我可以按住Ctrl键单击一个项目以取消选择它,但这对我的用户来说不够直观。 我想要一种方法来第二次点击取消选择它。 换句话说,点击一次 – 选择; 单击所选项目,它将被取消选中。 我尝试过使用ChangeListener和onMouseClicked事件。 两者都不是很好。 以下是每个代码段的代码片段。 的ChangeListener: 效果 – 列表中的第一项永远不会被选中。 我点击它并保持不被点击。 对项目2..n没有影响 listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(final ObservableValue observableValue, final SpecificAlgorithmData oldData, final SpecificAlgorithmData newData) { //if already selected then deselect it int selectedIndex = listView.getSelectionModel().getSelectedIndex(); System.out.println(“selected ” + selectedIndex); System.out.println(“all selected” + listView.getSelectionModel().getSelectedIndices()); if (!selecting && !listView.getSelectionModel().getSelectedIndices().contains(selectedIndex)){ […]

java.lang.ArrayIndexOutOfBoundsException:length = 4; index = 4长度数组

我有这个错误: 04-02 11:03:57.922: E/AndroidRuntime(18952): FATAL EXCEPTION: main 04-02 11:03:57.922: E/AndroidRuntime(18952): java.lang.ArrayIndexOutOfBoundsException: length=4; index=4 04-02 11:03:57.922: E/AndroidRuntime(18952): at it.nad.cartellecliniche.fragment.SegmentoAnterioreFragment.onTaskComplete(SegmentoAnterioreFragment.java:471) 04-02 11:03:57.922: E/AndroidRuntime(18952): at it.nad.cartellecliniche.asynctask.LookupTask.onPostExecute(LookupTask.java:279) 04-02 11:03:57.922: E/AndroidRuntime(18952): at it.nad.cartellecliniche.asynctask.LookupTask.onPostExecute(LookupTask.java:1) 04-02 11:03:57.922: E/AndroidRuntime(18952): at android.os.AsyncTask.finish(AsyncTask.java:631) 04-02 11:03:57.922: E/AndroidRuntime(18952): at android.os.AsyncTask.access$600(AsyncTask.java:177) 04-02 11:03:57.922: E/AndroidRuntime(18952): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 04-02 11:03:57.922: E/AndroidRuntime(18952): at android.os.Handler.dispatchMessage(Handler.java:99) 04-02 11:03:57.922: E/AndroidRuntime(18952): at android.os.Looper.loop(Looper.java:137) 04-02 11:03:57.922: […]

后增量无限循环i + = i ++;

我不明白为什么这个后增量方程不会增加。 我原本以为在+ =操作之后,值会增加1,然后第二次我将获得1值。 但输出是0零的无限循环。 有人能够解释为什么’我’不会增加。 int i = 0; for(; ; ) { if ( i >= 10) break; i += i++; } System.out.println(i);

BigQuery和OAuth2

我正在尝试使用服务帐户方法访问Google BigQuery。 我的代码如下: private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); GoogleCredential credentials = new GoogleCredential.Builder() .setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(“XXXXX@developer.gserviceaccount.com”) .setServiceAccountScopes(BigqueryScopes.BIGQUERY) .setServiceAccountPrivateKeyFromP12File( new File(“PATH-TO-privatekey.p12”)) .build(); Bigquery bigquery = Bigquery.builder(HTTP_TRANSPORT, JSON_FACTORY).setHttpRequestInitializer(credentials) .build(); com.google.api.services.bigquery.Bigquery.Datasets.List datasetRequest = bigquery.datasets().list( “PROJECT_ID”); DatasetList datasetList = datasetRequest.execute(); if (datasetList.getDatasets() != null) { java.util.List datasets = […]