【问题标题】:String to JSON array of json objects字符串到 json 对象的 JSON 数组
【发布时间】:2016-05-16 14:16:44
【问题描述】:

我有一个 Sring (JSON 数组)[{"Phonetype":"Pre","Phone":"918282311"},{"Phonetype":"pre","Phone":"918333222"}]

现在我想将此字符串转换为 JSON 对象的 JSON 数组。

在我的代码中,我只能创建一个 JSONarray 对象...

@Override
    public ArrayList<TelephoneNumber> convertToAttribute(String s) {
        ArrayList<TelephoneNumber> list = new ArrayList<TelephoneNumber>();

        JSONParser parser = new JSONParser();
        JSONArray arr = null;
        try {
            arr = (JSONArray) parser.parse(s);
        }
        catch (ParseException e) {
            e.printStackTrace();
        }

        for (JSONObject jo: arr) 
        {   
            System.out.println("obj  " +jo.get("Phone");

        }
        //create a list
        return list;
    }

如何创建 JsonObjects 的 JsonArray?

【问题讨论】:

    标签: java arrays json


    【解决方案1】:

    考虑使用 Gson 解析 json 值并在 GsonBuilder 上使用 FieldNamingPolicy 以获取正确处理大写驼峰式名称的 Gson 对象:

    Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
                .create();
    
    
    Type listType = new TypeToken<ArrayList<TelephoneNumber>>() {}.getType();
    List<TelephoneNumber> numbers = gson.fromJson(jsonArray, listType);
    

    【讨论】:

      【解决方案2】:

      我建议您查看Gson。它是由 Google Overlords 编写的一系列 Java 类,用于处理与 Java 类之间的 JSON 序列化和反序列化。

      所以,对你的 TelephoneNumber 类的外观做一些假设,你应该能够做到这一点:

      Type listType = new TypeToken<ArrayList<TelephoneNumber>>() {
                          }.getType();
      ArrayList<TelephoneNumber> yourList = new Gson().fromJson(s, listType);
      

      然后返回yourList....

      【讨论】:

      • 感谢@Tom Mac。但字段显示为 Null。首先我打印列表并给我 [DN_Schema.TelephoneNumber@64616ca2, DN_Schema.TelephoneNumber@13fee20c]。然后 trie 打印每个电话 2 个字段并显示为 NULL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      相关资源
      最近更新 更多