>Java >java지도 시간 >컨트롤러 메서드의 반환 값이 단순 유형인 경우 json과 상호 작용하는 방법은 무엇입니까?

컨트롤러 메서드의 반환 값이 단순 유형인 경우 json과 상호 작용하는 방법은 무엇입니까?

Y2J
Y2J원래의
2017-05-16 09:23:281701검색

본 글에서는 springmvc의 json 데이터 상호작용 컨트롤러 방식을 주로 소개한다. 컨트롤러 방식의 반환값은 간단한 타입으로, 필요한 친구들이 참고할 수 있다.

컨트롤러 메소드의 반환 값은 String과 같은 간단한 유형입니다. json과 상호 작용하는 방법은 무엇입니까?

@RequestBody 사용

예를 들어 코드는 다음과 같습니다.

@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8")
@ResponseBody
public String ceshijson(@RequestBody String channelId) throws IOException{

 return channelId;

코드가 위와 같은 상황이라면 , 프런트 데스크에서 json을 보냅니다. @RequestBody를 사용할 때 이렇게 작성해야 합니다(작성 ​​방법은 다양하니 그냥 사용하세요)

function channel(){
   //先获取选中的值
   var channelId = $("#channelId option:selected").val();
   //来判断发送的链接
   if(channelId ==2){


   $.ajax({
     url:"ceshijson",
     type:"post",
     dataType:'json',
     contentType:'application/json;charset=utf-8',
     data:JSON.stringify({'channelId':channelId}),
     success:function(data){
      alert(data.channelId);
     },
     error:function(XMLHttpRequest, textStatus, errorThrown){ 
     alert("Error") 
     alert(XMLHttpRequest.status); 
     alert(XMLHttpRequest.readyState); 
     alert(textStatus); 
     }
   });
   }
  }

여기서 특히 주의해야 할 점은 이전에 강조한 것처럼 기사에 따르면 @RequestBody를 사용하는 경우 json String으로 데이터를 수신하려면 String ChannelId가 필요합니다. 즉, 데이터가 data:{'channelId':channelId}와 같이 기록되면 잘못된 것입니다. jsonobject 형태이기 때문이죠.

JSON.stringify() 함수를 사용하지 않으려면 문자열을 직접 연결하세요.

data:'{"channelId":'+channelId+'}'

또한 채널 ID는 큰따옴표로 묶여 있습니다. 이는 json 구문 규칙이므로 작은따옴표로 쓸 수 없습니다. 작은따옴표로 변경합니다. 즉,

** 잘못된 쓰기

data:"{'channelId':"+channelId+"}"

이 형식은 백엔드로 전달할 수 있지만 백엔드는 정의되지 않습니다. 즉, key를 큰따옴표로 묶어야 합니다.

@RequestBody를 사용하지 마세요

 @RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8")
 @ResponseBody
 public String ceshijson(String channelId) throws IOException{
  Map<String,Object> map = new HashMap<String,Object>();
   map.put("channelId", channelId);
   ObjectMapper mapper = new ObjectMapper();
   channelId = mapper.writeValueAsString(map);
  return channelId;
 }

포그라운드 코드

$.ajax({
   url:"ceshijson",
   type:"post",
   dataType:&#39;json&#39;,
   //contentType:&#39;application/json;charset=utf-8&#39;,
   data:"channelId="+channelId,
   success:function(data){
    alert(data);
   },
   error:function(XMLHttpRequest, textStatus, errorThrown){ 
     alert("Error") 
     alert(XMLHttpRequest.status); 
     alert(XMLHttpRequest.readyState); 
     alert(textStatus); 
    }
});

이 메소드는 ObjectMapper의 writeValueAsString을 사용하여 Java 객체를 json 문자열로 변환합니다.

요약: 이 방법은 일반적으로 이런 방식으로 데이터를 수신하지 않기 때문에 실제로는 큰 실용적인 의미가 없습니다. 그냥 이해하세요!

【관련 추천】

1. 특별 추천: "php Programmer Toolbox" V0.1 버전 다운로드

2. Java 무료 동영상 튜토리얼

3. JAVA 초보자 동영상 튜토리얼

위 내용은 컨트롤러 메서드의 반환 값이 단순 유형인 경우 json과 상호 작용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.