【问题标题】:Convert string of valid JSON to JSON object in Java, so I can index into it将有效 JSON 字符串转换为 Java 中的 JSON 对象,以便我可以对其进行索引
【发布时间】:2018-10-13 20:43:41
【问题描述】:

我有这个字符串:

[{"row 0":[{},{},{},{},{},{},{},{}]},{"row 1":[{},{},{},{},{},{},{},{}]},{"row 2":[{},{},{},{},{},{},{},{}]},{"row 3":[{},{},{},{},{},{},{},{}]},{"row 4":[{"column 0":"WhitePawn"},{},{},{},{},{},{},{}]},{"row 5":[{},{},{},{},{},{},{},{}]},{"row 6":[{},{},{},{},{},{},{},{}]},{"row 7":[{},{},{},{},{},{},{},{}]}]

^ 它目前是一个字符串,我们称之为string

我正在尝试将其转换为 JSON,如下所示:

new JSONObject(string);

但它不起作用。如何在 Java 中做到这一点?

代码如下:

    private void parseMessageRedrawBoard(String message) {

        Log.d("0000: ", message);

        String trimmed = message.substring(message.indexOf("["));

        Log.d("1111: ", trimmed);

        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(trimmed);
            Log.d("maybe worked...", "~");
        } catch (Exception e) {
            Log.d("dammit: ", e.getMessage());
        }

    }

【问题讨论】:

  • 怎么'不工作'?分享代码、错误、我们可以帮助您的方法,请记住,我们并不是您身边的人都知道
  • JSONLint 表示它是有效的 JSON。你有例外吗?
  • JSON 以[ 开头,这意味着它是一个数组,而不是一个对象,因此请改用JSONArray
  • @Andreas 好的,我接受你投了反对票,很荣幸你能告诉我原因
  • @Andreas 虽然其他人给出了正确的答案,但你知道我会如何索引它吗?

标签: java json serialization


【解决方案1】:

您正在修剪字符串并将其转换为无效的 JSON。

您的 JSON 以“[”开头,表示它是一个数组。如果它以“{”开头,您可以假定它是一个对象。

因此,由于您的 JSON 是一个数组,您可以解析您提到的这个确切内容:

JSONArray jsonArray = new JSONArray(string);

并访问列表中的元素:

jsonArray.get(0);

【讨论】:

  • 好人,我认为这行得通,但现在我怎样才能索引到它?
  • 我试过这个jsonArray[1],但没用,我想抓住那个值WhitePawn
  • 无需切换 JSON 库即可解决问题。
  • @Andreas 你在说什么问题,我很确定解决方案有效
  • @s.matthew.english 这是一个不同的问题。既然您知道如何正确解析 JSON,如果您在使用解析的 JSON 时遇到问题,您应该创建另一个问题,寻求帮助,显示您尝试过的内容以及您在哪里卡住。不要试图把这个问题变成别的东西。但是,在创建新问题之前,请先进行一些研究,因为其他人很可能也遇到过同样的问题,而网络上已经有您正在寻找的答案。
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2015-10-07
  • 2012-05-05
  • 1970-01-01
相关资源
最近更新 更多