如何POST改造返回JSONArray与根

Posted

技术标签:

【中文标题】如何POST改造返回JSONArray与根【英文标题】:How to POST retrofit return JSONArray with Root 【发布时间】:2021-09-15 19:00:41 【问题描述】:

我在使用 root/parent 获取 json 时遇到问题

网络服务

@POST("products")
Call<List<ProductResponse>> products(@Body ProductRequest productRequest);

我的响应模型

public class ProductResponse
   private String id_prodotto;

   private String nome_prodotto;

我的电话回复:

  public void products(String s)
    ProductRequest productRequest = new ProductRequest();
    productRequest.setToken(s);
    Call <List<ProductResponse>> pR = 
   ApiClient.getUserService().products(productRequest);
    pR.enqueue(new Callback<List<ProductResponse>>() 
       @Override 
        public void onResponse(Call<List<ProductResponse>> call, retrofit2.Response<List<ProductResponse>> response) 
            if(response.isSuccessful())
                productList = response.body();
                recyclerViewProdotti.setLayoutManager(new LinearLayoutManager(getContext()));
                recyclerViewProdotti.setHasFixedSize(true);
                adapterProducts = new AdapterProducts(context.getApplicationContext(),productList,tkn);
                recyclerViewProdotti.setAdapter(adapterProducts);
            else 
                Toast.makeText(context,"Fail Products " + tkn, Toast.LENGTH_LONG).show();
            
        
        @Override
        public void onFailure(Call<List<ProductResponse>> call, Throwable t) 
            Log.e("PR", t.getLocalizedMessage());
        
    

当我的回答是:

"id_prodotto": "1", "nome_prodotto": "one" "id_prodotto": "2", "nome_prodotto": "二"

但需要采取此响应: products: "id_prodotto": "1", "nome_prodotto": "one" "id_prodotto": "2", "nome_prodotto": "两个"

我需要做什么?

【问题讨论】:

【参考方案1】:

您可以使用List&lt;Object&gt;,因为您的回复是这样的。但是您需要在 Webservice 中删除 List。

@POST("products")
Call<ProductListResponse> products(@Body ProductRequest productRequest);

接下来,您需要使用 List 创建名为 ProductListResponse 的新模型类。

public class ProductListResponse 
    @SerializedName("products")
    private List<ProductResponse> product;

【讨论】:

以上是关于如何POST改造返回JSONArray与根的主要内容,如果未能解决你的问题,请参考以下文章

如何通过改造解析 JSON 响应

使用 Alamofire 调用 JSONArray

使用 JSONArray 中返回的值(整数)

无法使用改造解析对象内部 jsonarray 的 jsonarray?

jquery如何返回json数据?

从改造响应中获取 JSONArray