从JSON响应中删除字段?

时间:2016-10-05 10:39:37

标签: java json rest glassfish

我已经使用java和glassfish创建了一个restful api,但我遇到了问题(不是错误)。

当我从我的API收到JSON响应时,它工作正常,但包含bean的名称。

{"***countriesBean***":[ //(I need my response without this field)
  {"CountryID":"3","CountryName":"asdasdasd","DefaultCurrencyID":"0","DefaultLanguageID":"0"},{"CountryID":"16","CountryName":"sddd","DefaultCurrencyID":"1","DefaultLanguageID":"0"},{"CountryID":"1","CountryName":"Lebanon","DefaultCurrencyID":"3","DefaultLanguageID":"0"},{"CountryID":"2","CountryName":"asdasd","DefaultCurrencyID":"0","DefaultLanguageID":"2"}
]
}

3 个答案:

答案 0 :(得分:0)

这是豆

 package beans;

import javax.ws.rs.FormParam;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author ahmad.s
 */
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class CountriesBean {

//    @XmlElement

    @XmlElement(name="CountryID")
    private Integer COUNTRY_ID;
    @XmlElement(name="CountryName")
    private String COUNTRY_NAME;
    @XmlElement(name="LanguageID")
    private Integer LANGUAGE_ID;
    @XmlElement(name="DefaultCurrencyID")
    private Integer DEFAULT_CURRENCY_ID;
    @XmlElement(name="DefaultLanguageID")
    private Integer DEFAULT_LANGUAGE_ID;
    @XmlElement(name="TaskID")
    private Integer TASK_ID;
    @XmlElement(name="CurrencyID")
    private Integer CURRENCY_ID;

    public Integer getCURRENCY_ID() {
        return CURRENCY_ID;
    }

    public void setCURRENCY_ID(Integer CURRENCY_ID) {
        this.CURRENCY_ID = CURRENCY_ID;
    }

    public Integer getTASK_ID() {
        return TASK_ID;
    }

    public void setTASK_ID(Integer TASK_ID) {
        this.TASK_ID = TASK_ID;
    }

    public Integer getDEFAULT_LANGUAGE_ID() {
        return DEFAULT_LANGUAGE_ID;
    }

    public void setDEFAULT_LANGUAGE_ID(Integer DEFAULT_LANGUAGE_ID) {
        this.DEFAULT_LANGUAGE_ID = DEFAULT_LANGUAGE_ID;
    }

    public Integer getDEFAULT_CURRENCY_ID() {
        return DEFAULT_CURRENCY_ID;
    }

    public void setDEFAULT_CURRENCY_ID(Integer DEFAULT_CURRENCY_ID) {
        this.DEFAULT_CURRENCY_ID = DEFAULT_CURRENCY_ID;
    }

    public Integer getCOUNTRY_ID() {
        return COUNTRY_ID;
    }

    public void setCOUNTRY_ID(Integer COUNTRY_ID) {
        this.COUNTRY_ID = COUNTRY_ID;
    }

    public String getCOUNTRY_NAME() {
        return COUNTRY_NAME;
    }

    public void setCOUNTRY_NAME(String COUNTRY_NAME) {
        this.COUNTRY_NAME = COUNTRY_NAME;
    }

    public Integer getLANGUAGE_ID() {
        return LANGUAGE_ID;
    }

    public void setLANGUAGE_ID(Integer LANGUAGE_ID) {
        this.LANGUAGE_ID = LANGUAGE_ID;
    }
}

这是国家服务类

package service;

import beans.CountriesBean;
import com.xperteam.DBC.DataBaseConnection;
import entity.Countries;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

/**
 *
 * @author ahmad.s
 */
@Stateless
@Path("countries")
public class CountriesFacadeREST extends AbstractFacade<Countries> {

    @PersistenceContext(unitName = "WeddingRestApiPU")
    private EntityManager em;

    public CountriesFacadeREST() {
        super(Countries.class);
    }

    @POST
    @Override
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public void create(Countries entity) {
        super.create(entity);
    }

    @PUT
    @Path("{id}")
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public void (@PathParam("id") Long id, Countries entity) {
        super.(entity);
    }

    @DELETE
    @Path("{id}")
    public void remove(@PathParam("id") Long id) {
        super.remove(super.find(id));
    }

    @GET
    @Path("{id}")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Countries find(@PathParam("id") Long id) {
        return super.find(id);
    }

    @GET
    @Override
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Countries> findAll() {
        return super.findAll();
    }

    @GET
    @Path("{from}/{to}")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Countries> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
        return super.findRange(new int[]{from, to});
    }

    @GET
    @Path("count")
    @Produces(MediaType.TEXT_PLAIN)
    public String countREST() {
        return String.valueOf(super.count());
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    @GET
    @Path("/getAllCountries") // webresources/beans.contactbean/getContactID?ContactID=? get contact info by id
    @Produces(MediaType.APPLICATION_JSON)
    public ArrayList<CountriesBean> getAllCountries() {

        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        ArrayList<CountriesBean> CountriesList = new ArrayList<CountriesBean>();
        CountriesBean CountriesBean = null;
        StringBuffer query = new StringBuffer();

        query.append("  SELECT   ");
        query.append("  COUNTRIES.COUNTRY_ID, ");
        query.append("  COUNTRIES_TRANS.COUNTRY_TRANS_NAME,COUNTRIES.DEFAULT_CURRENCY_ID,COUNTRIES.DEFAULT_LANGUAGE_ID ");
        query.append(" FROM COUNTRIES INNER JOIN COUNTRIES_TRANS ON COUNTRIES_TRANS.COUNTRY_ID=COUNTRIES.COUNTRY_ID ");
        query.append(" WHERE COUNTRIES_TRANS.LANGUAGE_ID = 1 ");
        int counter = 1;
        try {
            DataBaseConnection DataBaseConnection = new DataBaseConnection();
            Connection con = DataBaseConnection.GetConnection();
            preparedStatement = con.prepareStatement(new String(query));

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                CountriesBean = new CountriesBean();

                CountriesBean.setCOUNTRY_ID(resultSet.getInt("COUNTRY_ID"));
                CountriesBean.setCOUNTRY_NAME(resultSet.getString("COUNTRY_TRANS_NAME"));
                CountriesBean.setDEFAULT_CURRENCY_ID(resultSet.getInt("DEFAULT_CURRENCY_ID"));
                CountriesBean.setDEFAULT_LANGUAGE_ID(resultSet.getInt("DEFAULT_LANGUAGE_ID"));
                CountriesList.add(CountriesBean);
            }
            con.close();
        } catch (SQLException sqlException) {
            CountriesList = null;
            System.out.println("getWeddingType : " + sqlException.getMessage());
        } catch (NamingException ex) {
            Logger.getLogger(CountriesFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            query = null;
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (Exception exception) {

            }
        }

        return CountriesList;
    }
}

答案 1 :(得分:0)

如果没有您的代码,我无法验证您的问题。

请参阅您期望的基本示例:

public class Customer {
  String fullName;
  String email;

  public String getFullName() {
    return fullName;
  }

  public void setFullName(String fullName) {
    this.fullName = fullName;
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  @Override
  public String toString() {
    return "Customer{" +
        "fullName='" + fullName + '\'' +
        ", email='" + email + '\'' +
        '}';
  }
}

...

@Path("/services")
public class MaisonService {

    @GET
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Customer getSampleCustomer() {
        Customer sampleCustomer = new Customer();
        sampleCustomer.setFullName("Trinh Toan Trung");
        sampleCustomer.setEmail("trinhtoantrung@gmail.com");
        return sampleCustomer;
    }
..

输出:

  

{&#34; email&#34;:&#34; trinhtoantrung@gmail.com",&#34; fullName&#34;:&#34; Trinh Toan Trung&#34;}

答案 2 :(得分:0)

有许多简单的方法可以做到这一点,以下是最简单的方法,因为您可以获得作为POJO或DTO clas的响应

MyResponse ob = new ObjectMapper()。readValue(jsonString,MyResponse.class);