gpt4 book ai didi

java - 如何将java Json数据获取类变成方法?

转载 作者:行者123 更新时间:2023-12-01 18:24:38 24 4
gpt4 key购买 nike

我有一个从 Web 服务获取数据的方法,所以我正在寻找一种将其作为方法调用的方法。我怎样才能把这段代码变成一个方法呢?或者我可以在方法中调用一个类吗?因为它有一个 protected 方法并从一个类扩展,但是如果我将扩展类 AsyncTask 实现到该类,我需要使用 Json 获取 protected 方法 doInBackground 它说“接口(interface)在此详细说明”。这是我的代码,我需要将其转换为方法或将其添加到我想要使用它的类中的方法:

Notice: I already extended AppCompatActivity to the class I want to call doInBackground in so I cannot extend FetchData class.

非常感谢:D

package com.example.wordspuzzlejsontest;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;





public class FetchData extends AsyncTask<Void, Void, Void> {

final String update = "4";
String data = "";
int currentLevel;

Context context;

FetchData(Context context) {
this.context = context;
}

@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("https://api.jsonbin.io/b/5e42776dd18e4016617690ce/" + update);

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while (line != null) {
line = bufferedReader.readLine();
data = data + line;
}

JSONArray JA = new JSONArray(data);

SharedPreferences sharedPreferences = context.getSharedPreferences("SHARED_PREFS", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();

currentLevel = sharedPreferences.getInt("currentLevel", 0);

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

i = currentLevel;
JSONObject JO = (JSONObject) JA.get(i);


String id = (String) JO.get("id");
String img = (String) JO.get("img");
String w1 = (String) JO.get("w1");
String w2 = (String) JO.get("w2");
String w3 = (String) JO.get("w3");
String w4 = (String) JO.get("w4");

editor.putString("id" + i, id);
editor.putString("img" + i, img);
editor.putString("w1" + i, w1);
editor.putString("w2" + i, w2);
editor.putString("w3" + i, w3);
editor.putString("w4" + i, w4);

editor.apply();
}

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

return null;
}

}


```

最佳答案

总结我的评论:

创建一个名为NewClass.java的新类

class NewClass extends FetchData{
public Void fetchData(Void... voids){ return this.doInBackground(voids);}
}

由于 doInBackground 在 protected 方法中,您将在 NewClass.java 内拥有私有(private)访问权限

关于java - 如何将java Json数据获取类变成方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60245855/

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