지난주에 위챗 맞춤 메뉴 개발 작업을 진행했는데 전체적으로 우울하네요.
먼저 몇 가지 인터페이스를 분석해 보겠습니다.
1: 쿼리 인터페이스는 두 개로 나뉘며, 하나는 개발 모드의 일반 쿼리 인터페이스로, 전달한 내용만 쿼리합니다. 인터페이스로 생성된 메뉴와 개인화된 메뉴(공식 계정의 다양한 사용자 그룹이 서로 다른 맞춤형 메뉴를 볼 수 있도록 허용), 그러나 WeChat 관리 플랫폼을 통해 추가한 메뉴는 얻을 수 없습니다. 모든 메뉴를 조회할 수 있는 인터페이스도 있는데 이 인터페이스는 플랫폼에 먼저 메뉴를 추가한 다음 백그라운드에서 이 인터페이스를 호출하면 메뉴를 가져올 수 있지만 이를 호출하면 json이 반환됩니다. 추가할 때와 인터페이스가 다릅니다. 형식이 다르고(즉, 그대로 json으로 다시 보내고 위챗으로 보내서 메뉴를 생성하면 생성할 수 없습니다.) 메뉴도 종류가 많습니다. WeChat 플랫폼에 추가되고 반환되는 json의 유형마다 형식이 모두 다르고 파싱하기가 매우 번거롭기 때문에 개인적으로 개발자 모드를 선택했기 때문에 일반 쿼리 인터페이스를 사용하는 것이 더 좋다고 생각합니다.
2: 인터페이스 생성; 이름에서 알 수 있듯이 이 인터페이스의 기능은 인터페이스를 생성하는 것이지만 이 인터페이스는 원래 기반으로 생성되지 않고 매번 모든 메뉴를 다시 생성합니다. 나머지 메뉴는 고정형식의 json으로 처리한 후 위챗으로 전송하기 때문에, 개별적으로 삭제하고 싶다면 삭제하고 싶은 메뉴를 삭제하고 나머지는 json으로 변경하면 됩니다. 수정하려는 경우에도 마찬가지입니다. 변경해야 하는 데이터를 교체한 다음 전체 메뉴를 json으로 변환하여 WeChat으로 보냅니다.
3: 삭제 인터페이스; 이 인터페이스는 모든 메뉴를 삭제하는 데 사용되지만, 호출한 후에는 다음 날까지 효과를 볼 수 없는 것 같고, 이 시간 동안에는 효과가 나타나지 않습니다. 당신은 여전히 이전에 생성한 메뉴를 쿼리할 수 있습니다.
내 임무는 메뉴의 추가, 삭제, 수정 및 쿼리를 백엔드 관리에 통합하는 것입니다. 여기서는 WeChat 인터페이스에 대한 요청이 json을 반환하는 방법에 대해서만 설명하겠습니다. 내 접근 방식은 이 문자열을 구문 분석하고 특정 규칙에 따라 개체에 작성한 후 목록에 추가하고, 삭제하거나 수정할 때 목록을 WeChat에서 요구하는 형식으로 다시 json으로 변환하는 것입니다. 메뉴를 생성하려면 WeChat 인터페이스를 호출하세요. (추가, 삭제, 수정을 위해서는 생성 인터페이스가 호출됩니다.) 객체 부분의 내 속성은 id(쉬운 작업을 위해 목록의 아래 첨자를 id로 설정), name(메뉴 이름), type(메뉴 유형, WeChat 사용자 정의 메뉴가 10가지 유형이 있습니다), parent(상위 메뉴 이름)입니다. , SecendLvMenu(보조 메뉴 개수), url(링크 메뉴에 필요), key(푸시 기능 호출), mediaid(
자료 호출 시 madia_id를 설정해야 함), sort(정렬 번호).
다음은 json을 목록으로 변환하는 코드입니다. 여기의 json 패키지는 사용하기 매우 쉬운 Alibaba의 fastjson 패키지입니다.
public static List
목록
obj=obj.getJSONObject("menu");
JSONObject a=new JSONObject( );
int num=0;
if(obj!=null){
//버튼의 json 배열 가져오기
JSONArray array= obj.getJSONArray(" 버튼");
if(array!=null){
for(int i=0;i a= array.getJSONObject(i); //유형 설명 없음은 2차 메뉴 유형이 있는 1차 메뉴입니다 if(a.get("type ")==null){ weixinMenu 메뉴=new weixinMenu(); menu.setId(num); menu.setSort(num); num++; menu.setName(a.getString("name"));//아래 첨자를 설정하고 정렬 번호를 설정하여 목록에 저장합니다 //Get 1차 메뉴 아래 2차 메뉴 JSONArray sub=a.getJSONArray("sub_button"); //2차 메뉴 개수는 상한이므로. 5이면 숫자를 추가하면 판단하기 쉽습니다 menu.setSecendLvMenuNum(sub.size()); menulist.add(menu); JSONObject b =new JSONObject(); for(int j =0;j weixinMenu menu2=new weixinMenu(); b=sub.getJSONObject(j); menu2 .setId(num); menu2.setSort(num); num++; menu2 .setName(b.getString("name")); menu2.setParent(a.getString("name"));//상위 메뉴는 지금 막 1단계 메뉴의 이름입니다 menu2.setType(b.getString("type")); menu.setKey(a.getString("key")); menu.setMediaId(a.getString("media_id")); menulist.add(menu); } } } } 메뉴 목록 반환; } 그런 다음 목록을 weixinJson으로 변환합니다. WeChat의 json을 업로드하려면 버튼 부분만 필요합니다. public static JSONObject listToWxJson(List JSONArray array=new JSONArray(); weixinMenu 메뉴=new weixinMenu(); int size=list.size(); for(int i=0;i menu=list.get(i); //2차 메뉴도 없고 상위 메뉴도 없으면 2차 유형의 1차 메뉴도 없습니다 if (menu.getSecendLvMenuNum( )==0&&menu.getParent()==null){ Map map. put("name" , menu.getName()); map.put("type", menu.getType()); if(menu.getUrl()!=null ){ map.put("url", menu.getUrl()); } if(menu.getKey()!=null){ map .put("key", menu.getKey()); } if(menu.getMediaId()!=null){ map.put(" media_id", menu.getMediaId()); } array.add(map); }else if(menu.getParent() ==null){ 상위 항목이 없는 메뉴는 두 번째 레벨이 있는 첫 번째 레벨 메뉴입니다. JSONObject obj=new JSONObject(); JSONArray sub=new JSONArray(); obj.put( "name",menu.getName()); weixinMenu submenu=new weixinMenu(); //전체 목록을 반복하고 이름 일치 사용 첫 번째 수준 메뉴에서 두 번째 수준 메뉴를 찾으려면 for(int j=0;j submenu=list.get(j); Map if((menu.getName()).equals(submenu.getParent())){ map=new HashMap< ;String, Object>(); map.put("name", submenu.getName()); map.put("type", submenu.getType()); if(submenu.getUrl() !=null){ map.put("url", submenu.getUrl()); } if(submenu.getKey()!=null) { map.put("key", submenu.getKey()); } if( submenu.getMediaId()!=null){ map.put("media_id", submenu.getMediaId()); } sub.add(map) ; } } obj.put("sub_button",sub); array.add(obj); } } Map map.put("button",array); //마지막으로 지도를 json으로 직접 변환 return (JSONObject)JSONObject.toJSON(map); } 이 세트는 기본적으로 고정되어 있습니다. , WeChat 메뉴를 목록으로 구문 분석할 수 있습니다. 작업이 완료된 후 json을 변환하면 후속 작업이 훨씬 쉬워집니다. 위 내용은 WeChat 개인화 메뉴 개발 모델에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!