解析JSON时出现问题

use*_*272 4 java android json

当我尝试解析JSON时,我收到一个非常奇怪的错误.实际上,文件非常简单,由一个简单的对象组成如下:

{
    "registered":false,
    "firstname":"xxx",
    "name":"yyyy",
    "email":"yyyy.xxx@gmail.com",
    "picture":"xxxxx.jpg",
    "username":"xxxy"
}
Run Code Online (Sandbox Code Playgroud)

为了解析这个文件,我使用了以下代码,其灵感来自Android SDK的示例:

public static boolean isRegistered(int nmb) {
    boolean toReturn = true;
    JsonReader reader = null;
    try {
        reader = new JsonReader(new InputStreamReader(new URL("xxx").openConnection().getInputStream()));
        reader.beginObject();
        while(reader.hasNext()) {
            String name = reader.nextName();
            Log.i("Next value", name);
            switch (name) {
                case "registered":
                    toReturn = reader.nextBoolean();
                    break;
                case "firstname":
                    ProfileManager.getInstance().setFirstname(reader.nextString());
                    break;
                case "name":
                    ProfileManager.getInstance().setName(reader.nextString());
                    break;
                case "email":
                    break;
                case "picture":
                    break;
                case "username":
                    break;
            }
        }
        reader.endObject();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return toReturn;
}
Run Code Online (Sandbox Code Playgroud)

当我开始执行时,我在执行时出现错误.

String name = reader.nextName();
Run Code Online (Sandbox Code Playgroud)

错误说它需要一个名字,但它得到一个STRING.可以肯定的是,我用nextString()替换nextName(),我得到了相反的错误:期望一个字符串,但是是NAME.我决定通过peek()方法检查第一个值,它清楚地说第一个元素是NAME.所以我尝试了一个非常简单的事情,手动读取对象,没有循环,它的工作原理.这怎么可能 ?此外,我需要修改什么才能使此代码可用?

谢谢 !

Sah*_*nda 5

尝试使用android sdk提供的内置库

                JSONObject obj = new JSONObject(jsonString);
                boolean registered = obj.getBoolean("registered");
                String firstname = obj.getString("firstname");
                String name = obj.getString("name");
                String email = obj.getString("email");
                String picture = obj.getString("picture");
                String username = obj.getString("username");
Run Code Online (Sandbox Code Playgroud)