java - 使用Gson解析JSON数字数组

标签 java json gson

这是我想用Gson解析的JSON字符串。我想快速简单地解析它。

{
    "values": [
        [
            1, 
            1, 
            0, 
            0, 
            0, 
            0, 
            11, 
            0.09090909090909091
        ], 
        [
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                1, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                1, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                0, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                0, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                0, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                0, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                11, 
                0
            ], 
            [
                0, 
                0, 
                0, 
                0, 
                0, 
                0.09090909090909091, 
                0
            ]
        ]
    ]
}

但我不知道如何用Gson编写解析代码。 最好的结果是我可以从解析的对象中提取列表。

我有可能写这样的类(class)吗?

class Value  
{  
    @SerializedName("0")   
    List<Float> value1;   
    @SerializedName("1")   
    List<Integer> value2;   
    ...........   
 } 

谢谢大家对我的帮助。

最佳答案

据我所知,这是以最有用的格式获取所需信息的最快方法。

您的 JSON 由一个列表组成,其中包含 list1( double 列表)和 list2( double 列表列表)。假设您想要准确解析您提供的示例,这是一个您可以使用的自包含类。

如果您需要有关其工作原理的模式详细信息,请随时询问。

package stackoverflow.questions;

import java.lang.reflect.Type;
import java.util.List;

import stackoverflow.questions.Test.Wrapper;

import com.google.gson.*;
import com.google.gson.reflect.TypeToken;

public class Q20118749 {

   /**
    * @param args
    */
   public static void main(String[] args) {
      String json = "{\"values\":[[1,1,0,0,0,0,11,0.09090909090909091],[[0,0,0,0,0,1,0],[0,0,0,0,0,1,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,11,0],[0,0,0,0,0,0.09090909090909091,0]]]}";

      JsonElement je = new JsonParser().parse(json);
      JsonArray list = je.getAsJsonObject().get("values").getAsJsonArray(); // to get rid of the value part

      Type listType1 = new TypeToken<List<Double>>() {}.getType();
      Type listType2 = new TypeToken<List<List<Double>>>() {}.getType();

      Gson g = new Gson();

      List<Double> listOfDouble = g.fromJson(list.get(0), listType1);
      List<List<Double>> listOfListOfDouble = g.fromJson(list.get(1), listType2);

      System.out.println(listOfDouble);
      System.out.println(listOfListOfDouble);
   }

}

这是我的执行:

[1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.09090909090909091]
[[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.09090909090909091, 0.0]]

如果您的数据发生变化,当然,您必须相应地更改此代码。

关于java - 使用Gson解析JSON数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118749/

相关文章:

java - android 中的 ksoap 与 .net

java - (c^k) 的大 O 表示法

java - Gson : deserialize time serialized by Jackson

java - jsf通过EL调用任意方法

java - 在 Kotlin Android 中将值传递给函数时进行编译时间检查

ios - 根据选择的初始值显示 JSON 数据

javascript - 无法更改对象属性的值 - JavaScript

c# - 如何判断 .NET 中的反序列化 JSON 对象中是否曾经定义过某个键?

java - 如何提取JSON字符串数据?

java - GSON java.lang.IllegalArgumentException : class 'xx' declares multiple JSON fields named 'XX' AND StackOverflowError 错误