使用gson

时间:2016-02-23 02:53:05

标签: java json gson schema metadata

我怎样才能"放"生成的输出,看起来是有效的JSON,到实际的JSON对象?

根据this answer gson 要求定义一个类。当然,有一种动态的加载或定义类的方法吗?还是通用类型?

在XML中,架构或DTD可用。我可以动态加载或找到类似JSON的内容,使用gson

代码:

package net.bounceme.noagenda;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.out;

public class NoAgenda {

    public static void main(String[] args) throws MalformedURLException, IOException {
        List<URL> urls = new ArrayList<>();
        new NoAgenda().iterateURLs(urls);
    }

    private void iterateURLs(List<URL> urls) throws MalformedURLException, IOException {
        urls.add(new URL("https://www.flickr.com/photos/"));
        urls.add(new URL("http://www.javascriptkit.com/dhtmltutors/javascriptkit.json"));
        urls.add(new URL("http://api.wunderground.com/api/54f05b23fd8fd4b0/geolookup/conditions/forecast/q/US/CO/Denver.json"));
        for (URL url : urls) {
            connect(url);
        }
    }

    private void connect(URL url) throws IOException {
        out.println(url);
        String line = null;
        StringBuilder sb = new StringBuilder();
        BufferedReader in = new BufferedReader(
                new InputStreamReader(url.openStream()));
        while ((line = in.readLine()) != null) {
            sb.append(line + "\n");
        }
        in.close();
        out.println(sb);

        //      HOW DO I TURN THIS INTO AN ACTUAL JSON??
    }
}

维基百科says

  

架构和元数据

     

JSON架构

     

JSON Schema [20]指定了一种基于JSON的格式来定义结构   用于验证,文档和交互控制的JSON数据。一个   JSON Schema提供给定的JSON数据的合同   应用程序,以及如何修改数据。

我正在使用的任意三个网址:

https://www.flickr.com/photos/

http://www.javascriptkit.com/dhtmltutors/javascriptkit.json

http://api.wunderground.com/api/54f05b23fd8fd4b0/geolookup/conditions/forecast/q/US/CO/Denver.json

1 个答案:

答案 0 :(得分:1)

您可以使用以下

StringBuilder sb = new StringBuilder();

String line;
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
    sb.append(line);
}
JSONObject json = new JSONObject(sb.toString());