GSON/Jackson in Android

后端 未结 1 615
[愿得一人]
[愿得一人] 2021-01-03 09:32

I was able to successfully parse the below JSON string in Android using JSONObject and JSONArray. Have had no success achieving the same result with GSON or Jackson. Can som

相关标签:
1条回答
  • 2021-01-03 09:57

    Following are simple examples of using Gson and Jackson to deserialize/serialize JSON (similar to the invalid JSON in the original question) to/from a matching Java data structure.

    The JSON:

    {
        "response": {
            "status": 200
        },
        "items": [
            {
                "item": {
                    "body": "Computing",
                    "subject": "Math",
                    "attachment": false
                }
            },
            {
                "item": {
                    "body": "Analytics",
                    "subject": "Quant",
                    "attachment": true
                }
            }
        ],
        "score": 10,
        "thesis": {
            "submitted": false,
            "title": "Masters",
            "field": "Sciences"
        }
    }
    

    The Matching Java Data Structure:

    class Thing
    {
      Response response;
      ItemWrapper[] items;
      int score;
      Thesis thesis;
    }
    
    class Response
    {
      int status;
    }
    
    class ItemWrapper
    {
      Item item;
    }
    
    class Item
    {
      String body;
      String subject;
      boolean attachment;
    }
    
    class Thesis
    {
      boolean submitted;
      String title;
      String field;
    }
    

    Jackson Example:

    import java.io.File;
    
    import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
    import org.codehaus.jackson.map.ObjectMapper;
    
    public class JacksonFoo
    {
      public static void main(String[] args) throws Exception
      {
        ObjectMapper mapper = new ObjectMapper();  
        mapper.setVisibilityChecker(  
          mapper.getVisibilityChecker()  
            .withFieldVisibility(Visibility.ANY));
        Thing thing = mapper.readValue(new File("input.json"), Thing.class);
        System.out.println(mapper.writeValueAsString(thing));
      }
    }
    

    Gson Example:

    import java.io.FileReader;
    
    import com.google.gson.Gson;
    
    public class GsonFoo
    {
      public static void main(String[] args) throws Exception
      {
        Gson gson = new Gson();
        Thing thing = gson.fromJson(new FileReader("input.json"), Thing.class);
        System.out.println(gson.toJson(thing));
      }
    }
    
    0 讨论(0)
提交回复
热议问题