以Json样式格式化String

时间:2015-11-16 10:59:41

标签: java json

我从网页中提取了一个巨大的字符串,并希望以Json样式设置样式/格式化。提取的String最初是一种Json格式,但现在提取后这只是一个长字符串。我使用了JsonObj并且格式化程序确实很好用,他从底部到顶部移动文本改变了一般的行顺序等。

格式化后

http://pastebin.com/exwwc6SY JsonFile

http://pastebin.com/WHXtE36G提取的字符串

这里是代码

try {
        FileWriter fw = new FileWriter("/tmp/1.txt");
        String line = ROUtils.getStringFromInputStream(urlConnection.getInputStream());
        System.out.println(line);
        String jsonObj = new JSONObject(line).toString(2);
        fw.write(jsonObj);
    } catch (IOException e) {
        e.printStackTrace();
    }

getStringFromInputStream()方法

public static String getStringFromInputStream(InputStream is) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();
    String line;
    try {
        br = new BufferedReader(new InputStreamReader(is));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    return sb.toString();
}

更新

我发现了一个新问题。 JsonObj文件不等于原始字符串。 我比较了字符数(没有空格)。原始字符串有96311,JsonObj有92636.任何人都可以给我一个提示,我该怎么办?

2 个答案:

答案 0 :(得分:0)

您不能也不应该依赖JSON对象中元素的排序。

来自http://www.json.org/

的JSON规范

对象是一组无序的名称/值对。

答案 1 :(得分:0)

我发现了为什么我在转换后错过了4000个字符。 我忘了关闭FileWriter!

iostream

close()方法调用flush()方法,以便可以写下String的最后一个缓冲部分。

谢谢你们。