使用GSon形成JSON字符串

时间:2012-10-22 10:17:08

标签: java android gson

import java.util.HashMap;

public class JSON {

    public String name;

    public HashMap<String, String> Credentials = new HashMap<String, String>();

    public JSON(String name){
        Credentials.put(name, name);
    }

}

JSON json = new JSON("Key1");
new Gson().toJson(json);

我得到以下值作为输出。

  

{ “凭证”:{ “KEY1”: “KEY1”}}

现在我将如何使用Gson创建类似下面的JSONObject。

2 个答案:

答案 0 :(得分:2)

您创建一个与您的JSON数据结构匹配的POJO:

public class MyObject {

    public HashMap<String,HashMap<String,String>> Credentials;
    public HashMap<String, String> Header;

}

编辑以下评论:

这有点“数据结构101”,但是......你有一个JSON对象,它归结为一个包含两个哈希表的哈希表,其中第一个哈希表包含两个哈希表。

您可以像上面显示的那样简单地表示这一点,或者您可以创建所有POJO并使用它们:

public class Credentials {
    private PrimeSuiteCredential primeSuiteCredential;
    private VendorCredential vendorCredential;

   // getters and setters

}

public class PrimeSuiteCedential {
    private String primeSuiteSiteId;
    private String primeSuiteUserName;
    ...

    // Getters and setters
}

public class VendorCredential {
    private String vendorLogin;
    ...

    // getters and setters
}


public class Header {
    private String destinationSiteId;
    ...

    // getters and setters

}

public class MyObject {
    public Credentials credentials;
    public Header header;

    // getters and setters
}

答案 1 :(得分:1)

在@Brian正在做的事情的基础上,你只需要自动序列化部分。

您所做的是以下内容,我必须说明,这是关于目前的单个对象。如果您要处理顶级对象集合,则必须查看GSON文档以获取更多详细信息。

Gson gson= new Gson();
Writer output= ... /// wherever you're putting information out to
JsonWriter jsonWriter= new JsonWriter(output);
// jsonWriter.setIndent("\t"); // uncomment this if you want pretty output
// jsonWriter.setSerializeNulls(false); // uncomment this if you want null properties to be emitted
gson.toJson(myObjectInstance, MyObject.class, jsonWriter);
jsonWriter.flush();
jsonWriter.close();

希望这能为您提供足够的上下文。 Gson应该足够聪明,能够找出你的属性并在输出中给出合理的名称。