我想在 servlet 中读取这个 json
{
"text" : "ABC",
"msg" : "9551667858",
"all":[
{"name":"one"},
{"name":"two"}
],
"obj":{
"firstname":"John",
"lastname":"Doe"
}
}
现在我想将此值分别获取到字符串、jsonarray 和 json 对象
我就是这样做的
PrintWriter out = response.getWriter();
try {
String newObj = request.getParameter("text");;
JSONObject jObj = new JSONObject(request.getParameter("obj"));
JSONArray jArray=new JSONArray(request.getParameter("all"));
out.print(newObj);
} catch (Exception e) {
e.printStackTrace();
out.write(e.toString());
}
response.setContentType("application/json");
您的代码部分正确。
String newObj = request.getParameter("jsondata");
是正确的。然后您必须从 jObj
字符串创建 newObj
。
String jsonString = <your json String>
JSONObject jsonObj = new JSONObject(jsonString);
JSONObject allObj = jsonObj.getJSONObject("obj");
JSONArray allArray = jsonObj.getJSONArray("all");
首先从请求对象中读取数据:-
String jsonStr = request.getParameter("jsondata");
使用 org.json 库解析它并创建 JsonObject :-
JSONObject jsonObj = new JSONObject(jsonStr );
现在,使用此对象来获取您的值:-
String id = jsonObj.getString("text");
您可以在这里查看完整的示例:-
如果你的字符串数据像,
{
"text" : "ABC",
"msg" : "9551667858",
"all":[
{"name":"one"},
{"name":"two"}
],
"obj":{
"firstname":"John",
"lastname":"Doe"
}
}
它可以变得像,
String jsonData = request.getParameter("jsondata");
解析为 JSONObject 是。
JSONObject jsonObject = new JSONObject(jsonData); // put "String"
你可以得到 JSONArray 像,
JSONArray jsonArray = jsonObject.getJSONArray("all");
祝你好运
我认为为时已晚,但是: 这是我从其他 stackoverflow 用户那里使用的方法,我不记得是哪个帖子了。 在 Javascript 中你可以使用这样的方法:
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState != 4) return;
if (this.status == 200) {
alert(this.responseText);
var data = JSON.parse(this.responseText);
}
};
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({answers}));
与 Servlet 中的服务器相比,您只需要使用此方法读取所有内容,然后获取所需的数据。
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.json.HTTP;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
@WebServlet(name = "T", value = "/T")
public class WebExam extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
JSONObject resp = new JSONObject();
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) { /*report an error*/ }
try {
JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
response.getWriter().println(jsonObject.toString());
} catch (JSONException e) {
// crash and burn
response.getWriter().println("unknown!");
}
}