📜  如何在服务器端接收 JSON 数据?(1)

📅  最后修改于: 2023-12-03 15:24:38.953000             🧑  作者: Mango

如何在服务器端接收 JSON 数据?

JSON 是一种轻量级的数据交换格式,广泛应用于客户端和服务器端之间的通信。在服务器端,接收 JSON 数据是非常常见的任务。本文将介绍如何在不同的服务器端技术中接收 JSON 数据。

Node.js

在 Node.js 中,可以通过内置的 http 模块和第三方模块 body-parser 来接收 JSON 数据。

使用 http 模块的示例代码如下:

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.method === 'POST' && req.url === '/api/data') {
    let body = '';
    req.on('data', (chunk) => {
      body += chunk.toString();
    });
    req.on('end', () => {
      const data = JSON.parse(body);
      // 处理接收到的 JSON 数据
      res.end('Received JSON data');
    });
  } else {
    res.statusCode = 404;
    res.end();
  }
});

server.listen(3000);

使用 body-parser 模块的示例代码如下:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

app.post('/api/data', (req, res) => {
  const data = req.body;
  // 处理接收到的 JSON 数据
  res.send('Received JSON data');
});

app.listen(3000);
Java

在 Java 中,可以通过内置的 servlet 来接收 JSON 数据。示例代码如下:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;

public class DataServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String contentType = request.getContentType();
        if (contentType != null && contentType.startsWith("application/json")) {
            BufferedReader reader = request.getReader();
            StringBuilder jsonString = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                jsonString.append(line);
            }
            reader.close();
            String json = jsonString.toString();
            // 处理接收到的 JSON 数据
            PrintWriter writer = response.getWriter();
            writer.write("Received JSON data");
        } else {
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        }
    }
}
Python

在 Python 中,可以通过内置的 json 模块和第三方模块 flaskdjango 来接收 JSON 数据。

使用 json 模块和 flask 的示例代码如下:

from flask import Flask, request

app = Flask(__name__)

@app.route('/api/data', methods=['POST'])
def data():
    content_type = request.headers.get('Content-Type')
    if content_type == 'application/json':
        json_data = request.get_json()
        # 处理接收到的 JSON 数据
        return 'Received JSON data'
    else:
        return 'Bad Request', 400

if __name__ == '__main__':
    app.run()

使用 json 模块和 django 的示例代码如下:

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
import json

@csrf_exempt
def data(request):
    if request.method == 'POST':
        content_type = request.headers.get('Content-Type')
        if content_type == 'application/json':
            json_data = json.loads(request.body.decode())
            # 处理接收到的 JSON 数据
            return HttpResponse('Received JSON data')
        else:
            return HttpResponse('Bad Request', status=400)
    else:
        return HttpResponse(status=405)

以上是在不同的服务器端技术中接收 JSON 数据的示例。无论使用什么技术栈,在接收 JSON 数据时,务必要注意传输的数据格式和数据类型的正确性。