我有 Json 字符串数组,看起来像这样,
{ {name:"214",value:true,Id:0},
{name:"215",value:true,Id:0},
{name:"216",value:true,Id:0}
}
并且想要将此字符串转换为 Json 数组对象并迭代列表以读取每个对象的值。然后将值设置为相应的dto并保存。 但我没有找到任何好的方法将普通 JSON 数组字符串转换为 json 数组对象。
我没有使用google 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"));
}
这里是解析 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);
}
}
使用这个: 假设您的
JSONArray
是 net.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);
我只是结合了一些答案并找到了正确的解决方案 这是代码..
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"));
}
您可以按照以下步骤操作,
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.*;
如果您有 DTO 类,则可以通过反射自动完成映射:
import net.sf.json.JSONArray;
List<DTO> list = (List<DTO>) JSONArray.toList(JSONArray.fromString(str), DTO.class);
JsonNode array = new ObjectMapper().readTree(str);
List<LinkedHashMap<String, String>> list = new
ObjectMapper().readValue(array.toString(), new TypeReference<>() {});
将任何 JSON 字符串列表转换为 LinkedHashMap 列表。