首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GSON库在Java对象和JSON文件之间映射字段名

如何使用GSON库在Java对象和JSON文件之间映射字段名
EN

Stack Overflow用户
提问于 2019-06-17 21:59:28
回答 1查看 89关注 0票数 0

我正在将JSON对象解析为Java对象,但有些字段为空。

结果

代码语言:javascript
复制
//Printed object after parsing, some fields are null 
{host_ip='null', open=false, host_fqdn='null', nmap_results='null', cvss_vector='cvss2#av:n/ac:l/au:n/c:c/i:c/a:c', cvss=10.0, attackvector='n', list_
of_ports=null, ports___port='null', plugin_family='Windows', scanner_name='Local Scanner', operating_system='null', plugin_name='Microsoft Windows XP Unsupported
Installation Detection'

Gson库的用法:

代码语言:javascript
复制
 for (int v = 0; v < splunk_results_as_Array.size(); v++)
                    {
                        String vuln_as_string = splunk_results_as_Array.get(v).toString();
                        Splunk_data splunkdata = new Gson().fromJson(vuln_as_string, Splunk_data.class); // parsing happens here
                                   System.out.print("\n Splunk : Splunk Java Object created \n" + splunkdata.toString());
                        splunkdata.ports_to_List();
                        splunkdata.setDataType(dataType);
                        list_of_Hosts.add(splunkdata);
                    }

字符串形式的Json对象

代码语言:javascript
复制
"result":
{"cvss_vector":"cvss2#av:n/ac:l/au:n/c:c/i:c/a:c","host-ip":"XX.XX.XX.XX","plugin_family":"Windows","scanner_name":"Local Scanner","plugin_name":"Microsoft RDP RCE (CVE-2019-0708) (uncredentialed check)","hostname":"XX.XX.XX.XX","cvss":"10.0","attackvector":"n","ports{}.port":"3389"}
}

正如您所看到的: host-ip和ports{}.ports确实有值。

classed使用:

代码语言:javascript
复制
public class Splunk_data
{
    private String host_ip;
    private boolean open;
    private String host_fqdn;
    private String nmap_results;
    private String cvss_vector;
    private double cvss;
    private String attackvector;    
    private String ports_port;
    private String plugin_family;
    private String scanner_name;
    private String operating_system;
    private String plugin_name;
     }

我认为导致问题的原因是host_ip不匹配主机ip,但是我Java不可能使用'-‘,所以我使用了'_’。

有没有办法解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-17 22:03:07

要对变量使用不同于JSON中实际键的名称,可以使用@Serialized注释。

代码语言:javascript
复制
@Serialized("host-ip")
private String host_ip;

这将起作用,并将您的host-ip解析为字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56632879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档