如何将JSON String数组转换为Json数组列表

时间:2013-01-25 05:17:19

标签: java json json-lib

我有Json String数组,看起来像这样,

{ {name:"214",value:true,Id:0},
  {name:"215",value:true,Id:0},
  {name:"216",value:true,Id:0}
}

并希望将此字符串转换为Json数组对象并迭代列表以读取每个对象的值。然后将值设置为相应的dto并保存。 但我没有找到任何好方法将普通的JSON数组字符串转换为json数组对象。

我没有使用谷歌json,我希望它能在普通的json本身完成。请帮助我

和java类我想要这样的东西

JSONObject[] jsonObjectList = String after convert();

    for (JSONObject jsonObject : jsonObjectList) {
        System.out.println(" name is --"+jsonObject.get("name"));
        System.out.println(" value is ---"+jsonObject.get("value"));
        System.out.println(" id is ----"+jsonObject.get("id"));

    }

5 个答案:

答案 0 :(得分:3)

以下是解析json对象的示例..使用JSON lib进行此操作..

import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
public class TestJson {
    public static void parseProfilesJson(String jsonStr) {
        try {
            JSONArray nameArray = (JSONArray) JSONSerializer.toJSON(jsonStr);
            System.out.println(nameArray.size());
            for(Object js : nameArray){
                JSONObject json = (JSONObject) js;
                System.out.println(json.get("date"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        String s = "[{\"date\":\"2012-04-23\",\"activity\":\"gym\"},{\"date\":\"2012-04-24\",\"activity\":\"walking\"}]";
        parseProfilesJson(s);
    }
}

答案 1 :(得分:1)

使用此: 假设您的JSONArraynet.sf.json.JSONArray

String str = "[ {name:\"214\",value:true,Id:0},{name:\"215\",value:true,Id:0},{name:\"216\",value:true,Id:0}]";
JSONArray array = JSONArray.fromObject(str);

答案 2 :(得分:1)

我刚刚结合了一些答案并找到了正确的解决方案 这是代码..

String str = "[ {name:\"214\",value:true,Id:1},{name:\"215\",value:false,Id:2},{name:\"216\",value:true,Id:3}]";
    JSONArray array = JSONArray.fromObject(str);
    for (Object object : array) {
        JSONObject jsonStr = (JSONObject)JSONSerializer.toJSON(object);
          System.out.println(" name is --"+jsonStr.get("name"));
            System.out.println(" value is ---"+jsonStr.get("value"));
            System.out.println(" id is ----"+jsonStr.get("Id"));
    }

答案 3 :(得分:0)

您可以执行以下操作,

String str = "[ {name:\"214\",value:true,Id:0},{name:\"215\",value:true,Id:0},{name:\"216\",value:true,Id:0}]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(str);
JsonArray jasonArray = element.getAsJsonArray();

如果您使用import com.google.gson.*;

答案 4 :(得分:0)

如果您具有DTO类,则可以通过反射自动完成映射:

import net.sf.json.JSONArray;

List<DTO> list = (List<DTO>) JSONArray.toList(JSONArray.fromString(str), DTO.class);