gpt4 book ai didi

java - 将 JSONObject 存储到变量中并将它们发送到另一个函数

转载 作者:行者123 更新时间:2023-11-30 02:14:01 26 4
gpt4 key购买 nike

我从另一个函数获取 JSON 字符串并将其转换为 JSONObject,以便将这些字符串值存储到单独的变量中。然后我将 JSONObject 中的变量发送到另一个类。您是否可以在 logcat 中看到,我成功地将 JSON 字符串放入我的函数中,我认为错误在于将 JSON 分成单独的变量。有人可以帮帮我吗?我是安卓小白

04-16 08:02:03.170: D/js string(1865): {"create_time":"2015-04-16T08:01:51Z","id":"PAY-5LH931619M647525PKUXWY3Y","intent":"sale","state":"approved"}
04-16 08:02:03.170: D/DoInBackground(1865): {"create_time":"2015-04-16T08:01:51Z","id":"PAY-5LH931619M647525PKUXWY3Y","intent":"sale","state":"approved"}
04-16 08:02:03.171: W/System.err(1865): org.json.JSONException: No value for
04-16 08:02:03.172: W/System.err(1865): at org.json.JSONObject.get(JSONObject.java:389)
04-16 08:02:03.173: W/System.err(1865): at org.json.JSONObject.getJSONObject(JSONObject.java:609)
04-16 08:02:03.173: W/System.err(1865): at learn2crack.listview.Donate$ProcessPayment.doInBackground(Donate.java:228)
04-16 08:02:03.173: W/System.err(1865): at learn2crack.listview.Donate$ProcessPayment.doInBackground(Donate.java:1)
04-16 08:02:03.173: W/System.err(1865): at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-16 08:02:03.173: W/System.err(1865): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-16 08:02:03.174: W/System.err(1865): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-16 08:02:03.174: W/System.err(1865): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-16 08:02:03.174: W/System.err(1865): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-16 08:02:03.174: W/System.err(1865): at java.lang.Thread.run(Thread.java:818)
04-16 08:02:03.299: E/AndroidRuntime(1865): FATAL EXCEPTION: AsyncTask #1
04-16 08:02:03.299: E/AndroidRuntime(1865): Process: learn2crack.listview, PID: 1865
04-16 08:02:03.299: E/AndroidRuntime(1865): java.lang.RuntimeException: An error occured while executing doInBackground()
04-16 08:02:03.299: E/AndroidRuntime(1865): at android.os.AsyncTask$3.done(AsyncTask.java:300)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
04-16 08:02:03.299: E/AndroidRuntime(1865): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.lang.Thread.run(Thread.java:818)
04-16 08:02:03.299: E/AndroidRuntime(1865): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference
04-16 08:02:03.299: E/AndroidRuntime(1865): at learn2crack.listview.Donate$ProcessPayment.doInBackground(Donate.java:240)
04-16 08:02:03.299: E/AndroidRuntime(1865): at learn2crack.listview.Donate$ProcessPayment.doInBackground(Donate.java:1)
04-16 08:02:03.299: E/AndroidRuntime(1865): at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-16 08:02:03.299: E/AndroidRuntime(1865): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-16 08:02:03.299: E/AndroidRuntime(1865): ... 4 more

Java 代码:

protected JSONObject doInBackground(String... args) {

UserFunctions userFunction = new UserFunctions();
String js = args[0];
Log.d("js string", js);
JSONObject obj;
JSONObject ii=null;
try {
obj = new JSONObject(js);
Log.d("DoInBackground", obj.toString());
ii = obj.getJSONObject("");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//JSONObject sendjson=null;

String create_time="";
String id="";
String intent="";
String sale="";
try {
create_time = ii.getString("create_time");
id = ii.getString("id");
intent = ii.getString("intent");
sale = ii.getString("sale");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("strings", create_time + "," + id + "," + intent + "," +sale);
JSONObject sendjson = userFunction.CreatePayment(create_time, id, intent,
sale);
Log.d("sendjson", sendjson.toString());

return sendjson;


}

最佳答案

问题是由这一行引起的

 ii = obj.getJSONObject("");

您没有将 JSONObject 映射到空键字符串。您正在寻找的 key 已经可以通过您的 JSONObject obj; 例如

检索到
  create_time = obj.getString("create_time");

您也可以使用 optString 代替 getString。主要区别在于 optString 不会抛出异常,而是返回默认值(null 为字符串)

关于java - 将 JSONObject 存储到变量中并将它们发送到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com