自定义解串器GSON

时间:2011-06-28 18:46:04

标签: json jsp gson deserialization

我已经被这个话题困扰了2天了,似乎无法找到我需要的东西。


我有一个课程如下:

public class myClass {

private String name;
private ArrayList<String> arr1;
private ArrayList<String> arr2;
}

我通过jQuery ajax将json发布到一个jsp文件,该文件需要填充myClass的数组列表以便稍后进一步处理。

JSON看起来像这样:

[{"name":"myName","arr1":["foo","bar","blahh"],"arr2":["foo","bar","blahh"]},
 {"name":"myName2","arr1":["foo","bar","blahh"],"arr2":["foo","bar","blahh"]}]

我试图制作一个自定义反序列化程序,但我的所有尝试都是徒劳的。
这是我目前的职能:

     json = request.getParameter("myStuff");
     Gson gson = new Gson();
 Type listType = new TypeToken<ArrayList<myClass>>() {}.getType();
ArrayList<myClass> myClassList= new Gson().fromJson(json, listType);

感谢任何可以提供帮助的人。

更新:对不起,我忘了清楚地说出我在问什么。

我有两个相关的问题:

1。我需要使用解串器吗?2。如果是的话,我现在的那个有什么问题?

1 个答案:

答案 0 :(得分:1)

您发布的代码和JSON按预期序列化和反序列化,没有任何自定义反序列化。我没有看到任何错误。

import java.io.FileReader;
import java.lang.reflect.Type;
import java.util.ArrayList;

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

public class Foo
{
  public static void main(String[] args) throws Exception
  {
    Type listType = new TypeToken<ArrayList<myClass>>() {}.getType();
    Gson gson = new Gson();
    ArrayList<myClass> myClassList= new Gson().fromJson(new FileReader("input.json"), listType);
    System.out.println(gson.toJson(myClassList));
  }
}

class myClass
{
  private String name;
  private ArrayList<String> arr1;
  private ArrayList<String> arr2;
}

这不是你想要达到的目标吗?您确定从json收到的request.getParameter("myStuff")的价值是您所说的吗?