2017-05-09 8 views
0

デシリアライズ中にエラーが発生しました。java.util.ArrayListのインスタンスを[ソース:[email protected]のSTART_OBJECTトークンからデシリアライズできません。 1行:1]

私はURLを持っており、そのURLから、sb変数の下のコードを使用してJSONデータを取得していますが、このコードを使用してどのようにデシリアライズできますか?

私のJSONデータは次のとおりです。

{ "status": "success", 
    "msg": [ 
      { "fav_food": "roti", 
       "user_name": "123", 
       "email": "[email protected]" }, 
      { "fav_food": "iii", 
       "user_name": "343", 
       "email": "[email protected]" }, 
      { "fav_food": "paneer", 
       "user_name": "343", 
       "email": "[email protected]"} 
      ] 
} 

コード:

package com.pack; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.PrintWriter; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 
import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.ObjectMapper; 
@SuppressWarnings("serial") 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class Collection_to_jacksonJsonServlet extends HttpServlet { 
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
IOException { 
    resp.setContentType("text/html"); 
    PrintWriter out=resp.getWriter(); 

    Map<String,Directory> contacts=new HashMap<String,Directory>(); 

    ObjectMapper ob=new ObjectMapper(); 
    List<Data> l=new ArrayList<Data>(); 
    URL url=new URL("https://api-demo-py.appspot.com/getAllUsers"); 
    HttpURLConnection request = (HttpURLConnection) url.openConnection(); 
    request.connect(); 
    StringBuilder sb=new StringBuilder(); 
    BufferedReader br=new BufferedReader(new 
    InputStreamReader(request.getInputStream())); 
    String line; 
    try 
    { 
     //read from the urlConnection via the bufferedReader 
     while ((line = br.readLine()) != null) 
     { 
     sb.append(line); 
     } 
     br.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

    System.out.println(sb); 
    String jsonString=sb.toString(); 
    l= ob.readValue(jsonString,new TypeReference<List<Data>>(){}); 

    } 
} 

答えて

0

だけでなく、あなたが次のオブジェクトにデシリアライズする必要があります。このため

class Wrapper { 
    public String status; 
    public List<Data> msg; 
} 
+0

感謝を。これは本当に役に立ちました –

関連する問題