2
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。

4

2 回答 2

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
}
于 2012-10-22T10:23:46.177 回答
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 应该足够聪明,能够找出您的属性并在输出中给它们起合理的名称。

于 2012-10-22T11:58:40.370 回答