GVKun编程网logo

android – 如何从这个json对象中提取字符串数组?(android获取json数据)

24

想了解android–如何从这个json对象中提取字符串数组?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android获取json数据的相关问题,此外,我们还将为您介绍关于Androi

想了解android – 如何从这个json对象中提取字符串数组?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android获取json数据的相关问题,此外,我们还将为您介绍关于Android Studio:如何创建一个空字符串数组?、android – nullpointerexception试图从json字符串中获取json数组或json对象、android – 在json对象里面改造后发布数组?、android – 如何从OkHttp Response对象中提取原始JSON字符串?的新知识。

本文目录一览:

android – 如何从这个json对象中提取字符串数组?(android获取json数据)

android – 如何从这个json对象中提取字符串数组?(android获取json数据)

我正在尝试使用org.json中的类从以下json对象获取可用数字列表

    {
        "response":true,
        "state":1,
        "data":
        {
            "CALLERID":"81101099",
            "numbers":
                [
                       "21344111","21772917",
                       "28511113","29274472",
                       "29843999","29845591",
                       "30870001","30870089",
                       "30870090","30870091"
                ]
        }
    }

在从Web服务接收到json对象后,我的第一步是:

jsonObj = new JSONObject(response);
jsonData = jsonObj.optJSONObject("data");

现在,如何保存数字的字符串数组?

解决方法:

采用:

jsonObj = new JSONObject(response);
jsonData = jsonObj.optJSONObject("data");
JSONArray arrjson = jsonData.getJSONArray("numbers");
String[] arr = new String[arrjson.length()];
for(int i = 0; i < arrjson.length(); i++)
    arr[i] = arrjson.getString(i);

Android Studio:如何创建一个空字符串数组?

Android Studio:如何创建一个空字符串数组?

我想创建一系列字符串:

String a="";
String b="";
String c="";
String d="";
String e="";

我想创建一个字符串数组来将这些字符串放入其中,我试图写这样:

String[] abcde = {"a","b","c","d","e"}

但这并不是我的愿望,因为我只想让字符串变空……
对不起,我知道这似乎只是一个简单的问题,但我是一个新的学习者,期待听到你的帮助.谢谢!

解决方法:

这是一个相当简单的任务,您只需要使用:

String[] abcde = {a, b, c, d, e}

你用“”包装你的初始变量,这指的是一个“a”,现在是一个字符为a的字符串.

我希望这可以帮助您解决您的问题,这里是一个链接,以进一步帮助字符串.
Strings Java

android – nullpointerexception试图从json字符串中获取json数组或json对象

android – nullpointerexception试图从json字符串中获取json数组或json对象

参见英文答案 > Android problems with parsing json                                    2个
你好,当我试图从我的jsonString获取一个对象时,我继续得到NPE.我尝试了很多东西甚至改变了我的json一次,但它只是没有用. HTTPResponse工作正常,当我记录“myObject”时,它给出了正确的对象.但是当我试图让对象进入它时,它给了我一个NPE.我测试了json,它是有效的.我也尝试检索一个数组而不是一个对象,但它也提供了一个NPE.有人能告诉我如何解决这个问题.

我做了一个简单的jsontester活动来测试我的json:

public class JSONTester extends Activity {

private DefaultHttpClient createHttpClient() {
    HttpParams my_httpParams = new BasicHttpParams();
    httpconnectionParams.setConnectionTimeout(my_httpParams,3000);
    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http",PlainSocketFactory.getSocketFactory(),80));
    ThreadSafeClientConnManager multiThreadedConnectionManager = new ThreadSafeClientConnManager(my_httpParams,registry);
    DefaultHttpClient httpclient = new DefaultHttpClient(multiThreadedConnectionManager,my_httpParams);
    return httpclient;
}

MikeyJSON mJSON;

Button mBtnGo;
TextView mTxt1;
TextView mTxt2;
TextView mTxt3;
TextView mTxt4;
ProgressDialog mProgressDialog;
private String lang;        
private int length;     // 0 - 6 (length 7 to length 12)
private int wordPos;        // 0 - array length

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jsontester);

    mTxt1 = (TextView) findViewById(R.id.txt1);
    mTxt1 = (TextView) findViewById(R.id.txt1);
    mTxt1 = (TextView) findViewById(R.id.txt1);
    mTxt1 = (TextView) findViewById(R.id.txt1);
    mBtnGo = (Button) findViewById(R.id.btnGo);

}

public boolean isNumeric(String str) {

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

        if(Character.isDigit(str.charat(i))) {
            return true;
        }
    }
    return false;
}

public void testJSON(View view) {
    if(view==mBtnGo) {

        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setMessage("loading");
        mProgressDialog.show();
        new DownloadNewWords().execute();
    }

}
private class DownloadNewWords extends AsyncTask<Void,Void,Void> {

    int mStatusCode = 0;
    String mResultString;
    Exception mConnectionException;

    @Override
    protected Void doInBackground(Void... args) {

            String fetchUrl = "http://www.mikeywebs.nl/json/jsonexample.html";
            DefaultHttpClient httpclient = createHttpClient();
        HttpGet httpget = new HttpGet(fetchUrl);

        try {
            HttpResponse response = httpclient.execute(httpget);
            StatusLine statusLine = response.getStatusLine();
            mStatusCode  = statusLine.getStatusCode();
                if (mStatusCode == 200){
                mResultString = EntityUtils.toString(response.getEntity());
            }
        } catch (ClientProtocolException e) {
            e.printstacktrace();
            mConnectionException = e;
        } catch (IOException e) {
            e.printstacktrace();
            mConnectionException = e;
        }
        return null;            
    }

        @Override
    protected void onPostExecute(Void arg) {
        mProgressDialog.dismiss();
        if (mStatusCode  == 200){
            mJSON = new MikeyJSON(mResultString);   
            lang = "English";   //Integer.parseInt(langu);
            length = 7;  //Integer.parseInt(wordl);
            wordPos = 0;
            String getWord = mJSON.getResult(lang,length,wordPos);
            mTxt4.setText(getWord);

        }
        else {
            Toast.makeText(JSONTester.this,"Gegevens konden niet worden opgehaald. Controleer uw internetverbinding en probeer het opnieuw (" +mConnectionException.toString() + ")",Toast.LENGTH_LONG).show();
            mJSON = null;
        }
    }
}

}

我使用的jsonclass是:

public class MikeyJSON {

private JSONObject myObject;
private JSONArray jsonArray;

int i;


public MikeyJSON(String jsonString) {
    Log.i("JSON","jsonString: " + jsonString);
    try {
        JSONObject myObject = new JSONObject(jsonString);
        Log.i("JSON","myObject_Object: " + myObject.toString());
    } catch (JSONException e) {
        // Todo Auto-generated catch block
        e.printstacktrace();
    }

}

public String getResult(String lang,int length,int wordPos) {
    String word = "0";  
    //0 is Nederlands 1 is English
    int la = 0;
    if(lang.equals("English")) { 
        la = 1;
    }
    //make String length
    String le = "length" + Integer.toString(length);
    Log.i("PARSE","get_length: " + le);

    //the json
    try {
        jsonArray = myObject.getJSONArray("galgjejson");
        Log.i("JSON","jsonArray: " + jsonArray.toString());
    } catch (JSONException e) {
        // Todo Auto-generated catch block
        e.printstacktrace();
    }

    return word;        
}
}

这是json:

{ "galgjejson" : [
                { "Nederlands" :  [
                                        { "length7" : [ 
                                                            { "word" : "android" },{ "word" : "camping" },{ "word" : "koekjes" }
                                                        ]
                                        }
                                ]   
                },{ "English" : [
                                        { "length7" : [ 
                                                            { "word" : "android" },{ "word" : "koekjes" }
                                                        ]
                                        }
                                ]
                }               
            ]                                               
}

这是日志:

03-18 14:06:23.178: I/JSON(6719): myObject_Object: {"Nederlands":[{"length7":
[{"word":"android"},{"word":"camping"},{"word":"koekjes"}]}]}
03-18 14:06:23.178: I/PARSE(6719): get_length: length7
03-18 14:06:23.178: D/AndroidRuntime(6719): Shutting down VM
03-18 14:06:23.178: W/dalvikvm(6719): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-18 14:06:23.207: E/AndroidRuntime(6719): FATAL EXCEPTION: main
03-18 14:06:23.207: E/AndroidRuntime(6719): java.lang.NullPointerException
03-18 14:06:23.207: E/AndroidRuntime(6719):     at me.mikey.my.games.galgjex.MikeyJSON.<init>(MikeyJSON.java:38)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at me.mikey.my.games.galgjex.JSONTester$DownloadNewWords.onPostExecute(JSONTester.java:128)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at me.mikey.my.games.galgjex.JSONTester$DownloadNewWords.onPostExecute(JSONTester.java:1)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.os.AsyncTask.finish(AsyncTask.java:631)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.os.Looper.loop(Looper.java:137)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at java.lang.reflect.Method.invokeNative(Native Method)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at java.lang.reflect.Method.invoke(Method.java:511)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-18 14:06:23.207: E/AndroidRuntime(6719):     at dalvik.system.NativeStart.main(Native Method)

哦,第38行是:

jsonArray = myObject.getJSONArray("galgjejson");

解决方法

myObject很可能是null,因为你在类中拥有它,然后在mikeyJSON中私有.你应该尝试:

private JSONObject myObject;
private JSONArray jsonArray;

int i;


public MikeyJSON(String jsonString) {
Log.i("JSON","jsonString: " + jsonString);
try {
    myObject = new JSONObject(jsonString);
    Log.i("JSON","myObject_Object: " + myObject.toString());
} catch (JSONException e) {
    // Todo Auto-generated catch block
    e.printstacktrace();
}

}

看看那个JSON我很确定你可以使用构造函数中的字符串而不是JSONObject来创建JSONArray.

编辑的例子.

private JSONArray jsonArray;

int i;

public MikeyJSON(String jsonString) {
try {
    jsonArray = new JSONArray(jsonString);
} catch (JSONException e) {
    // Todo Auto-generated catch block
    e.printstacktrace();
}

}

android – 在json对象里面改造后发布数组?

android – 在json对象里面改造后发布数组?

我正在进行改造并通过post方法向服务器发送请求我现在得到这个json的响应,看到这是我发送到服务器的帖子.

adreess class for post i m using this object

 {
 "years":"1855",
 "months":"6",
 "skills":1
}

Now i have to implement array inside object in skills how to post this

  {
  "years":"1",
 "months":"6",
"skills":["1","2","3"],
    }

如何在改造中获取对象内部的数组
我使用这样的界面

        Call<AddressResponce> address(@Body Adreess adreess);

解决方法:

package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.Serializedname;

public class Example {

@Serializedname("years")
@Expose
private String years;
@Serializedname("months")
@Expose
private String months;
@Serializedname("skills")
@Expose
private List<String> skills = null;

public String getYears() {
return years;
}

public void setYears(String years) {
this.years = years;
}

public String getMonths() {
return months;
}

public void setMonths(String months) {
this.months = months;
}

public List<String> getSkills() {
return skills;
}

public void setSkills(List<String> skills) {
this.skills = skills;
}

}

我希望它对你有用..!

android – 如何从OkHttp Response对象中提取原始JSON字符串?

android – 如何从OkHttp Response对象中提取原始JSON字符串?

private static final String URL = "http://www.livroandroid.com.br/livro/carros/carros_{tipo}.json";

public static List<Carro> getCarros(Context context,String tipo) throws IOException {
    String url = URL.replace("{tipo}",tipo);
    OkHttpClient okHttpClient = new OkHttpClient();
    Request request = new Request.Builder()
            .url(URL)
            .build();
    Response response = okHttpClient.newCall(request).execute();
    String json = response.body().toString();
    List<Carro> carros = parserjson(context,json);
    return carros;
}

如果我在调用getCarros方法时打印出json变量的值,我在logcat中看到以下消息:

com.squareup.okhttp.internal.http.RealResponseBody@1e11866

如何记录我收到的实际JSON字符串?

解决方法

(最初回答OkHttp版本2.5.0).

更换

String json = response.body().toString();

String json = response.body().string();

response.body返回一个ResponseBody对象,该对象有自己的字符串方法:请参阅源here.

关于android – 如何从这个json对象中提取字符串数组?android获取json数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android Studio:如何创建一个空字符串数组?、android – nullpointerexception试图从json字符串中获取json数组或json对象、android – 在json对象里面改造后发布数组?、android – 如何从OkHttp Response对象中提取原始JSON字符串?等相关内容,可以在本站寻找。

本文标签: