【问题标题】:Can't Convert string to JsonArray无法将字符串转换为 JsonArray
【发布时间】:2011-09-21 05:52:22
【问题描述】:

如何把这个String转换成gson.JsonArray?

String s= "[["110917    ", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], ["110917    ", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]";

这是我的代码:

 com.google.gson.*;
 public static void main(String[] args)
   {
       //Declared S here
       System.out.println("String to Json Array Stmt");
       JsonParser parser = new JsonParser();
       JsonElement tradeElement = parser.parse(s.toString());
       JsonArray trade = tradeElement.getAsJsonArray();
       System.out.println(trade);
    }

这是把这个 Collections 字符串转换成 JSonArray 的方法吗?

【问题讨论】:

  • com.google.gson.JsonArray ;我正在使用这个库(gson)

标签: java arrays json string gson


【解决方案1】:

以上答案已弃用。我们必须改为调用静态方法。这是工作代码。

JsonArray outputJsonArray = JsonParser.parseString(pasteYourStringHere).getAsJsonArray();

【讨论】:

    【解决方案2】:

    要在 JSON 数组中包含字符串值,您必须记住在 Java 程序中使用反斜杠转义双引号。见下面 s 的声明。

    String s = "[[\"110917       \", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917    \", 2.71, 0.20999999999999999, 2.8199999999999998, 2.8999999999999999, 2987.0, 33762.0]]";
    

    main() 方法中的代码运行良好。下面只是对 main() 方法中代码的小修改。

    System.out.println("String to Json Array Stmt");
    JsonParser parser = new JsonParser();
    JsonElement tradeElement = parser.parse(s);
    JsonArray trade = tradeElement.getAsJsonArray();
    System.out.println(trade);
    

    最后,请记住在您的语句“com.google.gson.*”前加上关键字“import”,如下所示。

    import com.google.gson.*;
    

    【讨论】:

    • 这里的错字被误认为是问题中的导入。实际上是在源代码中添加的......谢谢
    • 可以拆分JsonArray吗?
    • 您的意思是获取 JsonArray "trade" 的第一个元素 ([\"110917 \", 3.0099999999999998, -0.72999999999999998, 2.8500000000000001, 2.96, 685.0, 38603.0])?尝试使用“trade.get(0)”。
    【解决方案3】:

    我没有看到问题。这段代码对我来说运行良好:

    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonParser;
    
    
    public class GsonExample {
        public static void main(String[] args) {
            String s= "[[\"110917\", 3.0099999999999998, -0.72999999999999998," +
                    "2.8500000000000001, 2.96, 685.0, 38603.0], [\"110917\", 2.71," +
                    "0.20999999999999999, 2.8199999999999998, 2.8999999999999999," +
                    "2987.0, 33762.0]]";
    
    
            JsonParser  parser = new JsonParser();
            JsonElement elem   = parser.parse( s );
    
            JsonArray elemArr = elem.getAsJsonArray();
            System.out.println( elemArr );
        }
    }
    

    唯一的问题可能是您未能正确转义 s 字符串文字中的双引号。

    【讨论】:

    • 我可以知道为什么我们需要在字符串前面添加/(反斜杠)吗?
    • 只是我想要第一个列表只作为一个 json 数组?可以通过吗?
    • 斜杠是为了转义 " 字符。如果你不这样做,编译器将无法知道你不打算以结束字符串为例。见这里:en.wikipedia.org/wiki/Escape_character
    • elemArr.get( index ) 例如可以用于返回数组的第一个元素。
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2015-03-29
    • 2023-03-21
    • 2013-03-30
    • 2012-04-28
    相关资源
    最近更新 更多