我不确定您的实现如何,下面是一个示例,可以帮助您使用 UTF-8 数据调用服务(取您的示例数据)
使用方法参数调用服务引用的示例 JSP
下面
<%--
Osgi HelloService Calling component.
--%><%
%>
<%@include file="/libs/foundation/global.jsp"%><%
%><%@page session="false" %>
<%@ page import="org.json.simple.JSONObject,java.util.*"%>
<%@ page import="com.mycompany.mytestservice.HelloService" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- getting my service reference -->
<%
com.mycompany.mytestservice.HelloService hs = sling.getService(com.mycompany.mytestservice.HelloService.class);
%>
<!-- got the string back as jobject -->
<%
JSONObject jobject = hs.getJsonObj("İş hayatında ne çok engelle karşılaşıldığını, her rakamın değerini, zamanın en büyük rakip olduğunu, güvenliği elden bırakmamayı ve iyi bir iş ortağının önemini, bilen bilir. Sprinter’i ve yeni Vito’suyla, Mercedes-Benz hafif ticari araçlar kazanmak için doğdular. Tıpkı sizin gibi."); %>
<br/>
<b>UTF string converted to JSON Object ::</b><br/>
<!-- display into page -->
<%
out.println(jobject);
%>
HelloService 接口
package com.mycompany.mytestservice;
import org.json.simple.JSONObject;
/**
* A simple json service interface
*/
public interface HelloService {
/**
* @return the JSON Object of requested data
*/
public JSONObject getJsonObj(String jsonobjp);
}
HelloServiceImpl 类
package com.mycompany.mytestservice.impl;
import javax.jcr.Repository;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mycompany.mytestservice.HelloService;
/**
* One implementation of the {@link HelloService}.
*/
@Service
@Component(metatype = false)
public class HelloServiceImpl implements HelloService {
protected final Logger log = LoggerFactory.getLogger(this.getClass());
public JSONObject getJsonObj(String jsonobjp){
JSONObject jsonobj = new JSONObject();
try {
jsonobj.put("testint", 30);
jsonobj.put("myjspstring", jsonobjp); // adding to json object
JSONArray list = new JSONArray();
list.add("message 1");
list.add("message 2");
jsonobj.put("messages", list);
log.info("*** JSON Object ***" + jsonobj);
}
catch (Exception e) {
e.printStackTrace();
}
return jsonobj; // return json object
}
}
最终当jsp调用产生以下JSON对象的输出
注意:确保您处理 \u2019 unicode 字符,由于 JSON 实现,该字符不是预期的输出。更多详情来自here
你可以找到另一个类似的例子how-to-set-utf-8-response-on-dopost-call