首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Map<String,Object>给空

Map<String,Object>给空
EN

Stack Overflow用户
提问于 2020-04-27 17:02:12
回答 1查看 512关注 0票数 0

我在java中有一个POJO类,我试图使用HashMap<>提取json,但是我得到了null。我不知道为什么?这是我的pojo课程

代码语言:javascript
复制
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的

代码语言:javascript
复制
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]}。提前感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 17:10:46

代码语言:javascript
复制
new JSONObject(map);

Map<String, String>**!**.警告:这只适用于你的是地图所以不能工作。

您可以从它的文档http://stleary.github.io/JSON-java/index.html中获得其他函数

葛森也可以用于序列化任意复杂的对象。

下面是您如何使用它:

代码语言:javascript
复制
Gson gson = new Gson(); 
String json = gson.toJson(myObject); 

Gson将自动将集合转换为JSON数组。Gson可以序列化私有字段,并自动忽略瞬态字段。

代码:

代码语言:javascript
复制
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文件中

代码语言:javascript
复制
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

如果您正在使用任何其他构建包(因为您在任何地方都没有提到),请执行适当的步骤来实现GSON。

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

https://stackoverflow.com/questions/61464272

复制
相关文章

相似问题

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