java - 如何从 json 字符串中获取值

标签 java android json key

我有一个 json 字符串,我想从中获取值。它采用 key 对形式,因此我需要每个 key 的值。

我试图获取值,但我没有获取到。

Json 字符串是这样的:

{
    "document": {
        "xmlns:xsi": "http:\/\/www.w3.org\/2001\/XMLSchema-instance",
        "xsi:schemaLocation": "http:\/\/ocrsdk.com\/schema\/recognizeard-1.0.xsd http:\/\/ocrsdk.com\/schema\/recognized-1.0.xsd",
        "xmlns": "http:\/\/ocrsdk.com\/schema\/recognize-1.0.xsd",
        "businessCard": {
            "imageRotation": "noRotation",
            "field":

                [{
                "type": "Name",
                "value": "Rafcev B. Agnrwal"
            }, {
                "type": "Company",
                "value": "VJ>"
            }, {
                "type": "Text",
                "value": "Dr. Rafcev B. Agnrwal\nMOB 0324%\nun\n) AOM*. founts. sso\nVJ>\nT"
            }]
        }
    }
}

我想获取“姓名”、“地址”、“公司”等值。

我试过这样:

JSONArray array;
if(mIntent.getStringExtra("jsonString") != null) {
            Log.d("json", mIntent.getStringExtra("jsonString"));

        try {
            JSONObject object = new JSONObject(mIntent.getStringExtra("jsonString"));

            array = object.getJSONArray("field");

            for (int i = 0; i < array.length(); i++) {
                JSONObject subObject1 = array.getJSONObject(i);

                edt_FirstName.setText(object.getString("Name"));
            }

        } catch (JSONException e) {

}

有人能帮帮我吗?谢谢..

编辑:

我试着检查这样的值:

for (int i = 0; i < array.length(); i++) {
    JSONObject subObject1 = array.getJSONObject(0);

    String type = subObject1.getString("type");
    String value = subObject1.getString("value");
    if (type.equals("Name")) {
        edt_FirstName.setText(value);
    }
    if(type.equals("Address"))
    {
        edt_address.setText(value);
    }
    if(type.equals("Company"))
    {
        edt_company.setText(value);
    }
    if(type.equals("Mobile"))
    {
        edt_Mobile.setText(value);
    }
}

我想从字段数组中获取所有值并设置为 TextView ,但我只获取了 Name 值而没有其他值。

我也可以像 Mobile 一样获得一个字段两次,所以我想结合两个 Mobile 值并显示它。

最佳答案

所以你的json对象如下:

{
    "document": {
        "xmlns:xsi": "http:\/\/www.w3.org\/2001\/XMLSchema-instance",
        "xsi:schemaLocation": "http:\/\/ocrsdk.com\/schema\/recognizeard-1.0.xsd http:\/\/ocrsdk.com\/schema\/recognized-1.0.xsd",
        "xmlns": "http:\/\/ocrsdk.com\/schema\/recognize-1.0.xsd",
        "businessCard": {
            "imageRotation": "noRotation",
            "field":

                [{
                "type": "Name",
                "value": "Rafcev B. Agnrwal"
            }, {
                "type": "Company",
                "value": "VJ>"
            }, {
                "type": "Text",
                "value": "Dr. Rafcev B. Agnrwal\nMOB 0324%\nun\n) AOM*. founts. sso\nVJ>\nT"
            }]
        }
    }
}

您首先需要将“文档”作为JSONObject,然后将“businessCard”作为JSONObject,然后您可以将“字段”作为JSONArray:

if(mIntent.getStringExtra("jsonString") != null) {
    Log.d("json", mIntent.getStringExtra("jsonString"));

    try {
        JSONObject object = new JSONObject(mIntent.getStringExtra("jsonString"));

        JSONArray array = object.getJSONObject("document").getJSONObject("businessCard").getJSONArray("field");

        for (int i = 0; i < array.length(); i++) {
            JSONObject subObject = array.getJSONObject(i);

            String type = subObject.getString("type");
            String value = subObject.getString("value");
            if (type.equals("Name")) {
                    String prevValue = edt_FirstName.getText();
                    edt_FirstName.setText((TextUtils.isEmpty(prevValue) ? "" : prevValue + ",") + value);
            }
        }

    } catch (JSONException e) { }
}

关于java - 如何从 json 字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42612426/

相关文章:

java - 在 Android 中提取我的 JSON 结果

java - 使用 HashMAP 将字符串转为 ArrayList

java - 如何升级Tomcat Java Applet以使用JNLP?

java - TabLayout 中点之间的间距

java - 基于名称的 Spring Javaconfig Autowiring 不起作用

java - 在单独的 JSTL 循环中访问 Map 值

Android在centerCropped图片中创建一个圆孔

java - Listview 适配器可以使用数组对象参数吗?

javascript - 语法错误 : JSON Parse error: Unexpected identifier "object" (anonymous function)

java - 我可以在处理先前请求的响应时提交新的 Volley 请求吗?