java - 地图给空
问题描述
我在 java 中有一个 POJO 类,我正在尝试使用 HashMap<> 获取 json,但我得到了空值。我不知道为什么?这是我的 pojo 课
public class NetworkConfiguration {
@SerializedName("GUID")
@Expose
private String gUID;
@SerializedName("Name")
@Expose
private String name;
@SerializedName("Type")
@Expose
private String type;
@SerializedName("WiFi")
@Expose
private WiFi wiFi;
public NetworkConfiguration() {
}
public NetworkConfiguration(String gUID, String name, String type, WiFi wiFi) {
super();
this.gUID = gUID;
this.name = name;
this.type = type;
this.wiFi = wiFi;
}
public String getGUID() {
return gUID;
}
public void setGUID(String gUID) {
this.gUID = gUID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public WiFi getWiFi() {
return wiFi;
}
public void setWiFi(WiFi wiFi) {
this.wiFi = wiFi;
}
}
这就是我生成json的方式
List<NetworkConfiguration> networkConfigurations=new ArrayList<>;
WiFi wiFi=new WiFi();
wiFi.setPassphrase(open_network_configuration_wifi_password_edit.getText().toString());
wiFi.setSecurity(spinner_open_network_configuration_wifi_security.getSelectedItem().toString());
wiFi.setSSID(open_network_configuration_wifi_ssid_edit.getText().toString());
if(open_network_configuration_wifi_autoconnect_option.isChecked())
{
wiFi.setAutoConnect(true);
}
else
{
wiFi.setAutoConnect(false);
}
Map<String,Object> openNetworkConfigurationMap= new HashMap<>();
networkConfigurations.add(new NetworkConfiguration(open_network_configuration_guid_edit.getText().toString(),
open_network_configuration_name_edit.getText().toString(),"WiFi",wiFi));
openNetworkConfigurationMap.put("NetworkConfigurations", networkConfigurations);
System.out.println(new JSONObject(openNetworkConfigurationMap));
System.out.println(networkConfigurations.get(0).getWiFi().getAutoConnect());
现在我正在打印在networkConfigurations
类中添加的值并且正在打印正确的值但是当我打印 json 时它给了我{"NetworkConfigurations":[null]}
。提前感谢您的帮助
解决方案
new JSONObject(map);
注意:这仅适用于Map<String, String>
! . 你的是地图,所以行不通。
您可以从其文档 http://stleary.github.io/JSON-java/index.html中获得其他功能
Gson也可以用来序列化任意复杂的对象。
以下是你如何使用它:
Gson gson = new Gson();
String json = gson.toJson(myObject);
Gson 会自动将集合转换为 JSON 数组。Gson 可以序列化私有字段并自动忽略瞬态字段。
代码:
List<NetworkConfiguration> networkConfigurations=new ArrayList<>;
WiFi wiFi=new WiFi();
wiFi.setPassphrase(open_network_configuration_wifi_password_edit.getText().toString());
wiFi.setSecurity(spinner_open_network_configuration_wifi_security.getSelectedItem().toString());
wiFi.setSSID(open_network_configuration_wifi_ssid_edit.getText().toString());
if(open_network_configuration_wifi_autoconnect_option.isChecked())
{
wiFi.setAutoConnect(true);
}
else
{
wiFi.setAutoConnect(false);
}
Map<String,Object> openNetworkConfigurationMap= new HashMap<>();
networkConfigurations.add(new NetworkConfiguration(open_network_configuration_guid_edit.getText().toString(),
open_network_configuration_name_edit.getText().toString(),"WiFi",wiFi));
openNetworkConfigurationMap.put("NetworkConfigurations", networkConfigurations);
Gson gson = new Gson();
String json = gson.toJson(openNetworkConfigurationMap);
System.out.println(json);
System.out.println(networkConfigurations.get(0).getWiFi().getAutoConnect());
此外,请确保 Gson 库存在于您的构建路径中。如果是 maven,您可以在 pom 文件中添加以下依赖项
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
如果您正在使用任何其他构建包(因为您没有在任何地方提及),请执行适当的步骤来引入 GSON。
推荐阅读
- php - 电子邮件未发送到 outlook.com
- r - 在 R 分组 df 中插入指定值并使用另一个 df (R) 填充缺失值
- c++ - 静态堆栈函数不 1) 接受第一个元素的输入 2) 在添加新元素时识别旧元素
- graphite - 从 Graphite DB 了解保留政策
- elasticsearch - 如何在 Elasticsearch 过滤脚本中使用嵌套字段
- c++ - 对没有比较器或 lambda 函数的向量进行排序?
- c - ifdef中的gcc编译函数
- c# - 从任务计划程序运行的 ClickOnce 控制台应用程序将不会更新
- vue.js - 如何在 vue js 中链接 vanilla js 资产?
- flutter - 如何在 Flutter 中从另一个屏幕接收编辑/更新的数据到主屏幕?