如何在android中的字符串中获取具有多个值的json

时间:2017-12-20 06:53:26

标签: android arrays json

我有一个json,其中有多个值以逗号分隔 array的形式。我想分别获得技能和平台。你能帮助我吗?

我想在文本中显示技能字符串和平台字符串。

请帮帮我。

格式为:

{
    "data": [
        {
            "skills": "ANDROID SDK, ANIMATION, ANGULARJS,",
            "platforms": "IOS Application, Social Networking, Online shopping Sites, Web Application"
        }
    ],
    "status": 100
}

9 个答案:

答案 0 :(得分:3)

试试这个

                       try {
                            JSONObject ob = new JSONObject(response);

                            int status = ob.getInt("status");

                            if (status == 100) {

                            JSONArray ja = ob.getJSONArray("data");

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

                                values = new HashMap<>();

                                JSONObject vj = ja.getJSONObject(i);

                                String skills = vj.getString("skills "));

                                String platforms=vj.getString("platforms"));

                                data.add(values);
                            }

使用&#39; split()&#39;

分割这两个字符串
                  List<String> skillsArray = Arrays.asList(skills.split(","));
                  List<String> platformsArray= Arrays.asList(platforms.split(","));

答案 1 :(得分:2)

String in = "your json";
JSONObject jsonObj = new JSONObject(in);

// Getting JSON Array node
JSONArray jsonarray = jsonObj.getJSONArray("data");

for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String skills = jsonobject.getString("skills");
    String platforms = jsonobject.getString("platforms");
}

答案 2 :(得分:1)

试试这个

int tryTimes = 0;
while (tryTimes < 2) // set retry times you want
{
    try
    {
        // do something with your retry code
        break; // if working properly, break here.
    }
    catch
    {
        // do nothing and just retry
    }
    finally
    {
        tryTimes++; // ensure whether exception or not, retry time++ here
    }
}

<强>输出

enter image description here

答案 3 :(得分:1)

你可以试试这个,

  JSONObject jsonObject = null;
    try {
        jsonObject = new JSONObject("JSON_STRING");
        JSONArray jsonArray = jsonObject.getJSONArray("data");
        for (int i = 0; i < jsonArray.length(); i++) {

            JSONObject jsonobject = jsonArray.getJSONObject(i);
            String skills = jsonobject.getString("skills");
            String[] seperateData = skills.split(Pattern.quote(","));
            for (int j = 0; j < seperateData.length; j++) {
                Log.e("Your Skill Value-> ", seperateData[j]);
            }

            String platforms = jsonobject.getString("platforms");
            seperateData = platforms.split(Pattern.quote(","));
            for (int j = 0; j < seperateData.length; j++) {
                Log.e("Your Platform Value-> ", seperateData[j]);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 4 :(得分:0)

首先将输出字符串转换为json。请注意,输出字符串是包含您在上面发布的json格式结果的字符串。以下是有关如何执行此操作的代码:

interface/implement

下一个是Array。这就是你将如何获得它并将迭代它。

JSONObject myJsonResponse = new JSONObject(yourString);

现在您已经获得了必需的字段,现在可以在String技能和平台上执行任何String函数。

快乐的编码。 。

答案 5 :(得分:0)

最好的方法是创建一个模型类:

public class MyModel{
Properties [] data;

class Properties{
 public String skills;
 public String platforms;
}
}

然后您可以将您的字符串解析为使用Gson库进行建模:

MyModel myModel = new Gson().fromJson(yourString, MyModel.class)

因此所有数据都在myModel对象中,您可以使用

访问技能
myModel.data[0].skills

将Gson库添加到您的项目中,将下面添加到您的应用程序gradle文件中:

compile 'com.google.code.gson:gson:2.8.1'

答案 6 :(得分:0)

class Data{
   public String skills;
   public String platforms;
}

Gson gson = new Gson();
JSONArray dataArray = response.getJSONArray("data");
List<Data> dataList= gson.fromJson(dataArray toString(), new TypeToken<List<Data>>() {
}.getType());

试试这个..这将使解析更容易。

  

实施'com.google.code.gson:gson:2.8.0'

答案 7 :(得分:-1)

试试这个你将获得所有用逗号标记的值

jsonString =从服务器端获取字符串

String[] separated = jsonString.split(",");
            StringBuilder s = new StringBuilder(10000);

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

                if (i == separated.length - 1) {
                    s.append(separated[i].trim() + "");
                } else {
                    s.append(separated[i].trim() + ",\n");
                }
            }
            //tvDisplayAddress.setText(s);
            Log.e("VALUES: ",s+"");

答案 8 :(得分:-1)

首先解析你的JSON:

JSONObject jsonObj = new JSONObject(in);
JSONArray jsonarray = jsonObj.getJSONArray("data");

for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String skills = jsonobject.getString("skills");
    String platforms = jsonobject.getString("platforms");
}

然后拆分字符串值:

String skills = "ANDROID SDK, ANIMATION, ANGULARJS";
    String[] separated = CurrentString.split(",");
    separated[0]; // this will contain "ANDROID SDK"
    separated[1]; // this will contain " ANIMATION"
    separated[2]; // this will contain " ANGULARJS"

您必须将空格移​​到第​​二个字符串:

separated[1] = separated[1].trim();