当前位置: 首页 > 知识库问答 >
问题:

如何在Android上通过改造解析json数据

卢光远
2023-03-14

我在这里尽量说得具体一点。所以我已经创建了最基本的代码,只是为了测试它,但我仍然无法获得数据,请帮助!这是我的代码:

这是本地服务器上的json输出:http://localhost:8080/KokosinjacRestfull/rest/textService/mudriPevci

[{“id”:1,“子类别”:“MudriPevci”,“标题”:“Mujo i haso”,“描述”:“Krenuli do Grada”,“作者”:“luka”,“日期”:“2016-06-13”},{“id”:3,“子类别”:“MudriPevci”,“标题”:“Perica”,“描述”:“Pa on je napravio Haos”,“作者”:“luka”,“日期”:“2016-06-13”}]

Text.class:

package kokosinjac.com.digiart.koktest.models;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;


public class Text {

@SerializedName("id")
@Expose
private Integer id;
@SerializedName("subCategory")
@Expose
private String subCategory;
@SerializedName("title")
@Expose
private String title;
@SerializedName("description")
@Expose
private String description;
@SerializedName("author")
@Expose
private String author;
@SerializedName("date")
@Expose
private String date;

/**
 * No args constructor for use in serialization
 *
 */


/**
 *
 * @param id
 * @param author
 * @param title
 * @param subCategory
 * @param description
 * @param date
 */


/**
 *
 * @return
 * The id
 */
public Integer getId() {
    return id;
}

/**
 *
 * @param id
 * The id
 */
public void setId(Integer id) {
    this.id = id;
}

/**
 *
 * @return
 * The subCategory
 */
public String getSubCategory() {
    return subCategory;
}

/**
 *
 * @param subCategory
 * The subCategory
 */
public void setSubCategory(String subCategory) {
    this.subCategory = subCategory;
}

/**
 *
 * @return
 * The title
 */
public String getTitle() {
    return title;
}

/**
 *
 * @param title
 * The title
 */
public void setTitle(String title) {
    this.title = title;
}

/**
 *
 * @return
 * The description
 */
public String getDescription() {
    return description;
}

/**
 *
 * @param description
 * The description
 */
public void setDescription(String description) {
    this.description = description;
}

/**
 *
 * @return
 * The author
 */
public String getAuthor() {
    return author;
}

/**
 *
 * @param author
 * The author
 */
public void setAuthor(String author) {
    this.author = author;
}

/**
 *
 * @return
 * The date
 */
public String getDate() {
    return date;
}

/**
 *
 * @param date
 * The date
 */
public void setDate(String date) {
    this.date = date;
}

}

Apiinterface.class:

包装kokosinjac.com.digiart.koktest.retrofit;

导入java.util.ArrayList;

进口kokosinjac。通用域名格式。digiart。科克泰斯特。模型。文本进口改装2。呼叫进口改装2。http。收到进口改装2。http。路径

公共接口RetroFitAPInterface{

@GET("rest/textService/{subCategory}")
Call<ArrayList<Text>> getText(@Path("subCategory") String subCat);

}

在手机上显示数据的类(您不需要注意某些字符串,只需查看改装部分,我已经尽可能地简化了,subCatData.class:

public static final String BASE_URL ="http://localhost:8080/KokosinjacRestfull/";
HashMap<String,String> dataArr;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_sub_cat_data);
    final TextView tView = (TextView) findViewById(R.id.textView);
    Intent intent = getIntent();
    String urlSecondPartBefore = intent.getStringExtra("passedSubCat");
    String urlSecondPartAfter = urlSecondPartBefore.replaceAll("\\s", "");
    String urlFirstPart = intent.getStringExtra("passedUrlFirstPart");
    String catName = intent.getStringExtra("passedCatName");
    String data = null;
   // TextView test = (TextView) findViewById(R.id.test);


    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    RetrofitAPInterface apiService = retrofit.create(RetrofitAPInterface.class);
    Call<ArrayList<Text>> call = apiService.getText("mudriPevci");
    call.enqueue(new Callback<ArrayList<Text>>() {
        @Override
        public void onResponse(Call<ArrayList<Text>> call, Response<ArrayList<Text>> response) {
            int statusCode = response.code();
            ArrayList<Text> textArray = response.body();
            for (Text t : textArray){
                tView.setText(t.getDescription());
            }
          //  Log.i("DATA", "onResponse: "+text.getId());
        }

        @Override
        public void onFailure(Call<ArrayList<Text>> call, Throwable t) {

        }
    });

}

}

我知道所有的数据都将被简单地标记出来,但这是为了测试目的。但我仍然无法检索任何内容,也没有收到任何错误。非常感谢您的帮助。谢谢

共有3个答案

岳俊晖
2023-03-14

问题可能在您的BASE_URL将BASE_URL更改为BASE_URL="超文本传输协议://

钱弘壮
2023-03-14

要解析Android上的JSON数据,我强烈建议使用JSOUP,您可以通过单击此处找到它,它简单、直接且用户友好。非常容易学习。希望这对你有帮助!

韩淇
2023-03-14

我认为你的URL有问题,如果你正在用android emulator测试你的应用程序,那么试试”http://10.0.2.2:8080/“。但如果您使用设备进行测试,则需要像一样传递计算机IP地址。”http://192.143.1.0/“。并确保您的设备已连接到数据库所在的计算机。

 类似资料:
  • 我是翻新和json的新手,我不知道如何解析下一个JSON字符串: } 我只想要权重数组中的“权重”和“日期”。我根据一些例子创建了一个pojo类,但是它不起作用。同样,当我在pojo类中尝试使用< code >时,我无法获得字符串形式的“weight ”(我将把它用作double)。string()。 (我知道使用<代码>。toString()显示类似“com.myPackage.MyPojo@x

  • 无法解析以下json数据。获得成功响应但返回的正文为空以下是我通过Web浏览器获得的json响应。 下面是用于解析所用响应类的模型类 Departure.java 调用api 我从浏览器中得到了正确的响应。但当通过改装库调用时,获得成功响应(200),但正文为空。 我从浏览器中得到了正确的响应。但当通过改装库调用时,获得成功响应(200),但正文为空。

  • 这是我的模型课 另一个模型类

  • 问题内容: 我想拉出用户块。JSON结果将始终更改,有时将返回4个用户,有时将返回10个,等等。 问题答案: 使用JSONObject

  • 问题内容: 我很难找到一种方法来解析JSONArray。看起来像这样: 如果JSON的写法不同,我知道如何解析它(换句话说,如果我返回了json对象而不是对象数组)。但这就是我所必须拥有的。 *编辑:这是一个有效的json。我使用此json制作了一个iPhone应用,现在我需要在Android上使用它,但无法弄清楚。有很多示例,但是它们都是与JSONObject相关的。我需要JSONArray。

  • 我正在使用来解析Json数据。我的Json数据如下: GsonParse.java 我使用以下方法来解析此JSON数据。 我面对以下错误。