我在Java中遇到解析json。这是我的代码:
package url.process;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONAware;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class jsonArray implements JSONAware{
private long l;
public jsonArray(long l){
this.l=l;
}
public long getArray(){
return l;
}
public void setArray(long l){this.l=l;}
@Override
public String toJSONString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("\""+getArray()+"\"");
sb.append("}");
return sb.toString();
}
public static void main(String[] args){
// doc doi tuong thanh chuoi
List <jsonArray> listjsonarray = new ArrayList<jsonArray>(){
{
add( new jsonArray(76543456));
add( new jsonArray(112233445));
add( new jsonArray(546372));
add( new jsonArray(9876553));
}
};
System.out.println(JSONArray.toJSONString(listjsonarray));
//doc chuoi thanh doi tuong
String jsonString = "[{\"76543456\"},"+"{\"112233445\"},"+"{\"546372\"},"+"{\"9876553\"}]";
try{
JSONParser jsonParser = new JSONParser();
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonString);
for(int i =0;i<jsonArray.size();i++){
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
long l = Long.parseLong((String) jsonObject.get("l"));
jsonArray ja = new jsonArray(l);
System.out.println("Elements is "+ja.getArray());
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
结果是: [{ “76543456”},{ “112233445”},{ “546372”},{ “9876553”}] 空
我不知道要解析上面的这个数组。请帮帮我,非常感谢你,祝你玩得愉快。
答案 0 :(得分:0)
您的JSON无效。大括号{}
表示包含键值对的JSON对象。但是你把JSON字符串放在其中。
[{"76543456"},{"112233445"},{"546372"},{"9876553"}]
也许你的意思是
["76543456","112233445","546372","9876553"]
JSON格式描述为here。
在尝试将String
投射到JSONObject
时,您会遇到其他问题。妥善处理。如果您要存储JSON字符串,则应该返回Java String
对象。
答案 1 :(得分:0)
JSON是一个键值数据结构。例如,JSON对象如下:
{"name" : "John Smith"}
您在那里输入的字符串不遵循JSON的约定,因此程序无法正常工作
答案 2 :(得分:0)
null
输出是因为
}catch(Exception e){
System.out.println(e.getMessage());
});
json无效,因此您获得ParseException
,此异常没有消息。
我可以看到您希望获得l
JSONObject
属性
long l = Long.parseLong((String) jsonObject.get("l"));
在这种情况下,正确的json将是
String jsonString = "[{\"l\": \"76543456\"},"+"{\"l\": \"112233445\"},"+"{\"l\": \"546372\"},"+"{\"l\": \"9876553\"}]";