Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON:在服务器上解析JSON数据时出现问题_Java_Android_Json_Servlets - Fatal编程技术网

Java JSON:在服务器上解析JSON数据时出现问题

Java JSON:在服务器上解析JSON数据时出现问题,java,android,json,servlets,Java,Android,Json,Servlets,当我将json数据从Android传递到服务器时,解析时服务器上会出现如下错误。org.json.JSONException:JSONObject文本必须以“{”开头,位于1[字符2第1行] servlet代码是: protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

当我将json数据从Android传递到服务器时,解析时服务器上会出现如下错误。org.json.JSONException:JSONObject文本必须以“{”开头,位于1[字符2第1行]

servlet代码是:

protected void doProcess(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        BufferedReader br = request.getReader();

        String sCurrentLine;
        StringBuilder sb = new StringBuilder();

        while ((sCurrentLine = br.readLine()) != null) {
            sb.append(sCurrentLine);
        }

        System.out.println(sb.toString().substring(4));

        try {
            JSONArray jArray = new JSONArray(sb.toString().substring(4));
            for (int i = 0; i < jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);
                json_data.getString("dwsList");
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
当我在服务器中打印Json数据时,它看起来像

 str=%5B%7B%22dwsList%22%3A%5B%7B%22farmer_name%22%3A%22JINJU%22%2C%22dws_date%22%3A%222013-03-08%22%2C%22farmer_code%22%3A%2210004%22%2C%22dws_num%22%3A%2253%22%2C%22dws_id%22%3A4%2C%22bag_weight%22%3A3000.0%2C%22net_weight%22%3A2000.0%2C%22selected%22%3Afalse%2C%22str_id%22%3A0%2C%22totalBags%22%3A20%7D%2C%7B%22farmer_name%22%3A%22KANNAN%22%2C%22dws_date%22%3A%222013-03-08%22%2C%22farmer_code%22%3A%2210005%22%2C%22dws_num%22%3A%2254%22%2C%22dws_id%22%3A5%2C%22bag_weight%22%3A1500.0%2C%22net_weight%22%3A1000.0%2C%22selected%22%3Afalse%2C%22str_id%22%3A0%2C%22totalBags%22%3A10%7D%5D%2C%22str_total_weight%22%3A4000.0%2C%22str_date%22%3A%222013-03-08%22%2C%22str_number%22%3A%221003%22%2C%22str_id%22%3A4%2C%22str_total_bag%22%3A0%2C%22status%22%3A0%2C%22selected%22%3Afalse%7D%5D

您可以尝试下面的代码来解析JSON

{
"result": "success",
"countryCodeList":
[
{"countryCode":"00","countryName":"World Wide"},
{"countryCode":"kr","countryName":"Korea, Republic of"},
{"countryCode":"us","countryName":"United States"},
{"countryCode":"jp","countryName":"Japan"},
{"countryCode":"cn","countryName":"China"},
{"countryCode":"in","countryName":"India"}
]
}

public static ArrayList<Country> ParseJson(String jsonstring) {

    ArrayList<Country> arrCountries = new ArrayList<Country>();

    String status;
    String message = "";
    try {


        JSONObject json = new JSONObject(jsonstring);

        status = json.getString("result");

        if (status.equalsIgnoreCase("success")) {


            JSONArray nameArray = json.names();
            JSONArray valArray = json.toJSONArray(nameArray);

            JSONArray valArray1 = valArray.getJSONArray(1);

            valArray1.toString().replace("[", "");
            valArray1.toString().replace("]", "");

            int len = valArray1.length();

            for (int i = 0; i < valArray1.length(); i++) {

                Country country = new Country();
                JSONObject arr = valArray1.getJSONObject(i);

                country.setCountryCode(arr.getString("countryCode"));
                country.setCountryName(arr.getString("countryName"));
                arrCountries.add(country);
            }
        }

    } catch (JSONException e) {
        Log.e("JSON", "There was an error parsing the JSON", e);
    }
    return arrCountries;
}
{
“结果”:“成功”,
“countryCodeList”:
[
{“countryCode”:“00”,“countryName”:“World Wide”},
{“国家代码”:“kr”,“国家名称”:“大韩民国”},
{“国家代码”:“美国”,“国家名称”:“美国”},
{“countryCode”:“jp”,“countryName”:“Japan”},
{“国家代码”:“cn”,“国家名称”:“中国”},
{“countryCode”:“in”,“countryName”:“India”}
]
}
公共静态ArrayList ParseJson(字符串jsonstring){
ArrayList arrCountries=新的ArrayList();
字符串状态;
字符串消息=”;
试一试{
JSONObject json=新的JSONObject(jsonstring);
status=json.getString(“结果”);
if(status.equalsIgnoreCase(“success”)){
JSONArray nameArray=json.names();
JSONArray valArray=json.toJSONArray(nameArray);
JSONArray valArray1=valArray.getJSONArray(1);
valArray1.toString().replace(“[”,”);
valArray1.toString().replace(“]”,“”);
int len=valArray1.length();
for(int i=0;i
发布完整的logcat消息或你在日志中得到的信息
System.out.println(sb.toString())
行你如何打印json?你能粘贴代码吗?@javapirate在android nameValuePairs中。添加(新的asicNameValuePair(“str”,新的Gson().toJson(strlist)));@JinjuJoseph问题是,当您在doProcess method()中接收到json字符串时,它不会对特殊字符进行转义。请确保在将它们传递给此方法之前转义所有的
{[:
。我在JSONObject json=new JSONObject(jsonstring)时遇到问题;我无法将字符串解析为JSONObject,请查看代码
 str=%5B%7B%22dwsList%22%3A%5B%7B%22farmer_name%22%3A%22JINJU%22%2C%22dws_date%22%3A%222013-03-08%22%2C%22farmer_code%22%3A%2210004%22%2C%22dws_num%22%3A%2253%22%2C%22dws_id%22%3A4%2C%22bag_weight%22%3A3000.0%2C%22net_weight%22%3A2000.0%2C%22selected%22%3Afalse%2C%22str_id%22%3A0%2C%22totalBags%22%3A20%7D%2C%7B%22farmer_name%22%3A%22KANNAN%22%2C%22dws_date%22%3A%222013-03-08%22%2C%22farmer_code%22%3A%2210005%22%2C%22dws_num%22%3A%2254%22%2C%22dws_id%22%3A5%2C%22bag_weight%22%3A1500.0%2C%22net_weight%22%3A1000.0%2C%22selected%22%3Afalse%2C%22str_id%22%3A0%2C%22totalBags%22%3A10%7D%5D%2C%22str_total_weight%22%3A4000.0%2C%22str_date%22%3A%222013-03-08%22%2C%22str_number%22%3A%221003%22%2C%22str_id%22%3A4%2C%22str_total_bag%22%3A0%2C%22status%22%3A0%2C%22selected%22%3Afalse%7D%5D
{
"result": "success",
"countryCodeList":
[
{"countryCode":"00","countryName":"World Wide"},
{"countryCode":"kr","countryName":"Korea, Republic of"},
{"countryCode":"us","countryName":"United States"},
{"countryCode":"jp","countryName":"Japan"},
{"countryCode":"cn","countryName":"China"},
{"countryCode":"in","countryName":"India"}
]
}

public static ArrayList<Country> ParseJson(String jsonstring) {

    ArrayList<Country> arrCountries = new ArrayList<Country>();

    String status;
    String message = "";
    try {


        JSONObject json = new JSONObject(jsonstring);

        status = json.getString("result");

        if (status.equalsIgnoreCase("success")) {


            JSONArray nameArray = json.names();
            JSONArray valArray = json.toJSONArray(nameArray);

            JSONArray valArray1 = valArray.getJSONArray(1);

            valArray1.toString().replace("[", "");
            valArray1.toString().replace("]", "");

            int len = valArray1.length();

            for (int i = 0; i < valArray1.length(); i++) {

                Country country = new Country();
                JSONObject arr = valArray1.getJSONObject(i);

                country.setCountryCode(arr.getString("countryCode"));
                country.setCountryName(arr.getString("countryName"));
                arrCountries.add(country);
            }
        }

    } catch (JSONException e) {
        Log.e("JSON", "There was an error parsing the JSON", e);
    }
    return arrCountries;
}