Java 使用Gson进行AWS-Json解析

Java 使用Gson进行AWS-Json解析,java,json,Java,Json,我从下面的代码示例中读取价格信息 public class SampleJson { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { String json = readUrl("http://aws.amazon.com/ec2/pricing/pricing-ebs-optimized-instances.json"); Type colle

我从下面的代码示例中读取价格信息

public class SampleJson
{

@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception
{

    String json = readUrl("http://aws.amazon.com/ec2/pricing/pricing-ebs-optimized-instances.json");

    Type collectionType = new TypeToken<EBS>()
    {
    }.getType();

    EBS ebs = (EBS) new Gson().fromJson(json, collectionType);

    Config config = ebs.getConfig();

    ArrayList<StringMap<Regions>> region = (ArrayList<StringMap<Regions>>) config.getRegions();
    for (StringMap<Regions> regObj : region)
    {
        Set<Entry<String, Regions>> reg = regObj.entrySet();

        for (Map.Entry<String, Regions> data : reg)
        {
            Object key = data.getKey();
            Object value = data.getValue();

            System.out.print(key + ": ");
            System.out.println(value);

        }



    }

}

private static String readUrl(String urlString) throws Exception
{
    BufferedReader reader = null;
    try
    {
        URL url = new URL(urlString);
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] chars = new char[1024];
        while ((read = reader.read(chars)) != -1)
            buffer.append(chars, 0, read);

        return buffer.toString();
    } finally
    {
        if (reader != null)
            reader.close();
    }

}
想要从instanceTypes字符串中读取名称、价格和大小


注意:我曾经生成java对象

您可以选择使用GSON将这些对象映射到java域对象

以下是我过去制作的一个教程,您可能会发现它很有用:


但这也是返回字符串而不是对象
region: us-east

instanceTypes: [{type=std, sizes=[{size=lg, valueColumns=[{name=ebsOptimized, prices= {USD=0.025}}]}, {size=xl, valueColumns=[{name=ebsOptimized, prices={USD=0.05}}]}]}, {type=hiMem, sizes=[{size=xxxxl, valueColumns=[{name=ebsOptimized, prices={USD=0.05}}]}]}]