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}}]}]}]