2014-07-31 3 views
1

Вот мой контроллер:Spring остальное не возвращает мой объект JSON

@Controller 
@RequestMapping("api") 
public class RestController { 
    @RequestMapping(value="check",method=RequestMethod.GET,produces="application/json") 
    @ResponseBody 
    public UserAcc returnuser(){ 
     return UserDao.getUserById(1); 
    } 
} 

... и это мой UserAcc класс:

@XmlRootElement 
@Entity 
@Table(name = "user_acc") 
@NamedQueries({ 
@NamedQuery(name = "UserAcc.findAll", query = "SELECT u FROM UserAcc u")}) 
public class UserAcc implements Serializable { 
private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "user_id") 
    private Integer userId; 

    @Basic(optional = false) 
    @Lob 
    @Column(name = "user_name") 
    private String userName; 

    @Basic(optional = false) 
    @Lob 
    @Column(name = "Company") 
    private String company; 

    @Basic(optional = false) 
    @Column(name = "user_email") 
    private String userEmail; 

    @Basic(optional = false) 
    @Column(name = "is_account_activated") 
    private boolean isAccountActivated; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "assigenedToId") 
    private List<Issues> issuesList; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "assosiateId") 
    private List<Projectdetails> projectdetailsList; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "moduleassignedtoid") 
    private List<DevelAcc> develAccList; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "assignedUserId") 
    private List<TestAcc> testAccList; 

    // ... code ommitted 

} 

Но я не получаю никакого ответа JSon от объекта userAcc , Есть какие-либо проблемы? Моя конфигурация пружины работает нормально. Любая помощь приветствуется!

+1

Пожалуйста, отредактируйте ваш вопрос и отформатируйте/отступом весь этот код. – sp00m

ответ

1

Предполагая, что у вас есть все необходимые зависимости (как уже было сказано в ответ Джека) на вашем пути к классам, вы могли бы попробовать это так:

@Controller 
@RequestMapping("/api") 
public class RestController { 
    @RequestMapping(value="/check",method=RequestMethod.GET,produces="application/json") 
    public @ResponseBody UserAcc returnuser(){ 
    return UserDao.getUserById(1);; 
    } 
} 

... или так:

@Controller 
@RequestMapping("/api") 
public class RestController { 
    @RequestMapping(value="/check",method=RequestMethod.GET,produces="application/json") 
    public @ResponseBody Map<String, Object> returnuser(){ 
    UserAcc acc = UserDao.getUserById(1); 
    Map<String,Object> map = new HashMap<>(); 
    map.put("id",""+acc.getId()); 
    //... and so on 
    return map; 
    } 
} 
1

Я реализовал это в последнее время с помощью Джексон (который используется для преобразования ответов POJO в JSON). Во-первых, я добавил Джексон зависимостей для моего проекта (я использую Maven):

<!-- Jackson for Java - JSON conversion --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 

    <!-- Jackson for Java - JSON conversion --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 

    <!-- Jackson for Java - JSON conversion --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 

Spring будет автоматически использовать Джексон, чтобы генерировать ответ JSON для любого метода контроллера, который возвращает ответ «приложения/JSON» (как это случай для вас).

Если вы хотите снабдите ваш ответ JSON с некоторыми персонажами, чтобы предотвратить JSON hijacking, затем включить это в Спринг конфигурационный файл:

<mvc:annotation-driven> 
    <!-- Set JSON converter (for converting Java to JSON in REST response --> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <!-- Add prefix to JSON response to prevent JSON hijacking --> 
      <property name="prefixJson" value="true" /> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 
  • это PREPEND все ответы в формате JSON с этой строки символов: { } & & (которое должно быть удалено вызывающим клиентом до обработки ответа).
Смежные вопросы