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文件到字符串[]_Java_Android_Json - Fatal编程技术网

Java 从json文件到字符串[]

Java 从json文件到字符串[],java,android,json,Java,Android,Json,我无法找到android应用程序被强制停止的错误。当我使用这个程序中注释的一般示例数据时,它工作得很好,但是当我使用这个代码时,它会崩溃 import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; import android.os.Bundle; import android.app.

我无法找到android应用程序被强制停止的错误。当我使用这个程序中注释的一般示例数据时,它工作得很好,但是当我使用这个代码时,它会崩溃

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;

import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.widget.EditText;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends Activity {

    // Declare Variables
    ListView list;
    ListViewAdapter adapter;
    EditText editsearch;
    String[] rank;
    String[] country;
    String[] population;
    ArrayList<WorldPopulation> arraylist = new ArrayList<WorldPopulation>();

    public String loadJSONFromAsset() {
        String json = null;
        try {
            InputStream is = getAssets().open("data.json");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            json = new String(buffer, "UTF-8");
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview_main);

        try {
            JSONObject obj = new JSONObject(loadJSONFromAsset());
            JSONArray m_jArry = obj.getJSONArray("maindata");
            rank = new String[m_jArry.length()];
            country = new String[m_jArry.length()];
            population = new String[m_jArry.length()];
            for (int i = 0; i < m_jArry.length(); i++) {
                JSONObject jo_inside = m_jArry.getJSONObject(i);
                rank[i] = jo_inside.getString("rank");
                country[i] = jo_inside.getString("country");
                population[i] = jo_inside.getString("population");
                System.out.println(rank[i]);
            }
        }catch (JSONException e){
            e.printStackTrace();
        }
        // Generate sample data
        /*rank = new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };

        country = new String[] { "China", "India", "United States",
                "Indonesia", "Brazil", "Pakistan", "Nigeria", "Bangladesh",
                "Russia", "Japan" };

        population = new String[] { "1,354,040,000", "1,210,193,422",
                "315,761,000", "237,641,326", "193,946,886", "182,912,000",
                "170,901,000", "152,518,015", "143,369,806", "127,360,000" };*/



        // Locate the ListView in listview_main.xml
        list = (ListView) findViewById(R.id.listview);

        for (int i = 0; i < rank.length; i++)
        {
            WorldPopulation wp = new WorldPopulation(rank[i], country[i],
                    population[i]);
            // Binds all strings into an array
            arraylist.add(wp);
        }

        // Pass results to ListViewAdapter Class
        adapter = new ListViewAdapter(this, arraylist);

        // Binds the Adapter to the ListView
        list.setAdapter(adapter);

        // Locate the EditText in listview_main.xml
        editsearch = (EditText) findViewById(R.id.search);

        // Capture Text in EditText
        editsearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
                String text = editsearch.getText().toString().toLowerCase(Locale.getDefault());
                adapter.filter(text);
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
                // TODO Auto-generated method stub
            }
        });
    }
}
import java.io.IOException;
导入java.io.InputStream;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Locale;
导入android.os.Bundle;
导入android.app.Activity;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.Menu;
导入android.widget.EditText;
导入android.widget.ListView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
公共类MainActivity扩展了活动{
//声明变量
列表视图列表;
ListViewAdapter适配器;
编辑文本编辑搜索;
字符串[]秩;
字符串[]国家;
字符串[]总体;
ArrayList ArrayList=新的ArrayList();
公共字符串loadJSONFromAsset(){
字符串json=null;
试一试{
InputStream=getAssets().open(“data.json”);
int size=is.available();
字节[]缓冲区=新字节[大小];
is.read(缓冲区);
is.close();
json=新字符串(缓冲区,“UTF-8”);
}捕获(IOEX异常){
例如printStackTrace();
返回null;
}
返回json;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
试一试{
JSONObject obj=新的JSONObject(loadJSONFromAsset());
JSONArray m_jArry=obj.getJSONArray(“主数据”);
rank=新字符串[m_jArry.length()];
country=新字符串[m_jArry.length()];
填充=新字符串[m_jArry.length()];
for(int i=0;i
Json文件包含:

{
    "maindata": [
        {
            "country": "rumbo",
            "rank": "45",
            "population": "45000"
        },
        {
            "country": "reck",
            "rank": "46",
            "population": "4500"
        }
    ]
}

01-13 06:22:27.024 2057-2057/? E/memtrack: Couldn't load memtrack module (No such file or directory)
01-13 06:22:27.024 2057-2057/? E/android.os.Debug: failed to load memtrack module: -2
01-13 06:22:27.045 2057-2070/? E/art: Thread attaching while runtime is shutting down: Binder_2
01-13 06:22:27.406 2073-2073/? E/memtrack: Couldn't load memtrack module (No such file or directory)
01-13 06:22:27.406 2073-2073/? E/android.os.Debug: failed to load memtrack module: -2
01-13 06:22:27.707 2086-2086/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.robosoft.elections, PID: 2086
                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.robosoft.elections/com.robosoft.elections.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:144)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:135)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5221)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
                                                  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
                                                     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
                                                     at org.json.JSONTokener.nextValue(JSONTokener.java:94)
                                                     at org.json.JSONObject.<init>(JSONObject.java:156)
                                                     at org.json.JSONObject.<init>(JSONObject.java:173)
                                                     at com.robosoft.elections.MainActivity.onCreate(MainActivity.java:55)
                                                     at android.app.Activity.performCreate(Activity.java:5933)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:135) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5221) 
                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
01-13 06:22:27.754 735-735/? E/EGL_emulation: tid 735: eglCreateSyncKHR(1181): error 0x3004 (EGL_BAD_ATTRIBUTE)
{
“主要数据”:[
{
“国家”:“伦波”,
“等级”:“45”,
“人口”:“45000”
},
{
“国家”:“reck”,
“等级”:“46”,
“人口”:“4500”
}
]
}
01-13 06:22:27.024 2057-2057/? E/memtrack:无法加载memtrack模块(没有此类文件或目录)
01-13 06:22:27.024 2057-2057/? E/android.os.Debug:未能加载memtrack模块:-2
01-13 06:22:27.045 2057-2070/? E/art:运行时关闭时线程连接:活页夹2
01-13 06:22:27.406 2073-2073/? E/memtrack:无法加载memtrack模块(没有此类文件或目录)
01-13 06:22:27.406 2073-2073/? E/android.os.Debug:未能加载memtrack模块:-2
01-13 06:22:27.707 2086-2086/? E/AndroidRuntime:致命异常:主
进程:com.robosoft.elections,PID:2086
java.lang.RuntimeException:无法启动activity ComponentInfo{com.robosoft.elections/com.robosoft.elections.MainActivity}:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“int java.lang.String.length()”
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)上
在android.app.ActivityThread.access$800(ActivityThread.java:144)
在android.app.ActivityThread$H。