【发布时间】:2015-12-01 12:12:13
【问题描述】:
在这里,我尝试将json 数据发送到我的网络服务器并使用php 我想解析 json 并将数据插入 mysql 数据库。我收到一条错误消息,提示 Value stdClass of type java.lang.String cannot be converted to JSONObject.
我该如何解决这个错误?
private void insertToDb() throws JSONException {
billType = (invEstSwitch.isChecked() ? textViewEstimate : textViewInvoice)
.getText().toString();
String invNumber = textViewInvNo.getText().toString();
String bcode = barCode.getText().toString();
String description = itemDesc.getText().toString();
String wt = weightLine.getText().toString();
String rateAmt = rateAmount.getText().toString();
String making = makingAmount.getText().toString();
String netr = netRate.getText().toString();
String iTotal=itemtotal.getText().toString();
String vatAmt =textViewVat.getText().toString();
String sumAmt =textViewSum.getText().toString();
String crtDate =textViewCurrentDate.getText().toString();
try {
jsonObject.put("custInfo", custSelected.toString());
jsonObject.put("invoiceNo", invNumber);
jsonObject.put("barcode", bcode);
jsonObject.put("desc", description);
jsonObject.put("weight",wt );
jsonObject.put("rate", rateAmt);
jsonObject.put("makingAmt", making);
jsonObject.put("net_rate",netr);
jsonObject.put("itemTotal",iTotal );
jsonObject.put("vat", vatAmt);
jsonObject.put("sum_total", sumAmt);
jsonObject.put("bill_type", billType);
jsonObject.put("date", crtDate);
} catch (JSONException e) {
e.printStackTrace();
}
try {
itemSelectedJson.put(index, jsonObject);
index++;
} catch (JSONException e) {
e.printStackTrace();
}
String jsonarray = itemSelectedJson.toString().trim();
JSONObject jb= new JSONObject();
jb.put("selected",itemSelectedJson);
Map<String,Object> params = new HashMap<>();
params.put("Array",jsonarray);
final JsonObjectRequest objectRequest = new JsonObjectRequest(Request.Method.POST, INVEST_URL, new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("RESPONSE", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("JSONERROR",error.toString());
}
});
final RequestQueue queue = Volley.newRequestQueue(this);
queue.add(objectRequest);
}
我是编程新手,因此感谢您提供任何帮助。谢谢:)
这是堆栈跟踪:
12-01 17:17:50.840 16785-16785/org.bordetuts.com.goldmine D/dalvikvm: GC_FOR_ALLOC freed 345K, 9% free 8597K/9396K, paused 14ms, total 14ms
12-01 17:17:50.841 16785-16785/org.bordetuts.com.goldmine D/SELECTED_ITEMS: [{"custInfo":"Ujwal 9975022560","rate":"24000","weight":"21.00000","desc":"GENTS ANGTHI 22k NO STONE","makingAmt":"200","sum_total":"RS.52094.46","vat":"RS.1021.46","itemTotal":"51073","barcode":"BQSP78BB","net_rate":"24200","date":"2015-12-01","invoiceNo":"1","bill_type":"Invoice"}]
12-01 17:17:50.897 16785-16785/org.bordetuts.com.goldmine W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
12-01 17:17:50.897 16785-16785/org.bordetuts.com.goldmine W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
12-01 17:17:51.259 16785-16785/org.bordetuts.com.goldmine D/JSONERROR: com.android.volley.ParseError: org.json.JSONException: Value stdClass of type java.lang.String cannot be converted to JSONObject
12-01 17:21:47.657 16785-16792/org.bordetuts.com.goldmine D/dalvikvm: GC_FOR_ALLOC freed 536K, 8% free 8689K/9396K, paused 171ms, total 190ms
这是我调试时看到的。问题是当我说 JSONObject(params) 时它说 params: size=1 objectRequest:"[]
【问题讨论】:
-
你能显示完整的堆栈跟踪吗?
-
@Patrick 我刚刚添加了堆栈跟踪,请检查。谢谢 :)
-
@Patrick 谢谢 :) 你能帮忙解答吗?
-
我在任何地方都找不到
Value stdClass。你能说出异常真正发生的地方吗?谢谢 -
检查您的 json 字符串中是否有一些看不见的字符。看看this answer。