解析json java结果null

时间:2014-10-07 15:53:26

标签: java json parsing

我在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”}] 空

我不知道要解析上面的这个数组。请帮帮我,非常感谢你,祝你玩得愉快。

3 个答案:

答案 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\"}]";