我有一个json
,其中有多个值以逗号分隔
array
的形式。我想分别获得技能和平台。你能帮助我吗?
我想在文本中显示技能字符串和平台字符串。
请帮帮我。
格式为:
{
"data": [
{
"skills": "ANDROID SDK, ANIMATION, ANGULARJS,",
"platforms": "IOS Application, Social Networking, Online shopping Sites, Web Application"
}
],
"status": 100
}
答案 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
}
}
<强>输出强>
答案 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();