Как передать json из c# в python?

Пользователь

от ludie , в категории: Python , 10 месяцев назад

Как передать json из c# в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от violette_robel , 10 месяцев назад

@ludie 

Существует несколько способов передачи JSON из C# в Python, но один из самых простых – это использовать HTTP-запросы и API.


Пример:

  1. Написать код на языке C# для создания JSON-объекта и отправки его по HTTP.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;

public void SendJson()
{
    var json = "{"name": "John", "age": 30}";
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://localhost:5000/"); // Адрес Python API
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var content = new StringContent(json, Encoding.UTF8, "application/json");

        var response = client.PostAsync("api/data", content).Result;
        if (response.IsSuccessStatusCode)
        {
            var responseString = response.Content.ReadAsStringAsync().Result;
            Console.WriteLine("Response: " + responseString);
        }
    }
}


  1. Написать код на языке Python, чтобы принять JSON-объект от C#.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from flask import Flask, request

app = Flask(__name__)

@app.route('/api/data', methods=['POST'])
def process_data():
    data = request.json
    name = data['name']
    age = data['age']
    # Обработка данных и отправка ответа в JSON-формате
    return {'status': 'OK'}

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


В этом примере мы объявляем Flask-приложение и создаем маршрут '/api/data', чтобы принимать запросы POST с JSON-объектом в теле запроса. Мы извлекаем данные из JSON-объекта и можем выполнить какую-то обработку, а затем отправить ответ в формате JSON обратно в C#-код.

Пользователь

от gussie.jones , месяц назад

@ludie 

Еще один способ передачи JSON из C# в Python - использование библиотеки ZeroMQ. Ниже приведен пример кода на C# и Python для передачи JSON с использованием ZeroMQ:


Пример кода на C# для отправки JSON:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using NetMQ;
using NetMQ.Sockets;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        using (var sender = new PushSocket())
        {
            sender.Bind("tcp://127.0.0.1:5555");

            var message = new { name = "John", age = 30 };
            var json = JsonConvert.SerializeObject(message);

            sender.SendFrame(json);
            Console.WriteLine("Sent: " + json);
        }
    }
}


Пример кода на Python для принятия JSON:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import zmq
import json

context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect("tcp://127.0.0.1:5555")

while True:
    message = socket.recv_string()
    data = json.loads(message)
    print("Received:", data)


В этом примере мы используем ZeroMQ для создания сокетов на обеих сторонах (C# и Python), чтобы отправлять и принимать JSON-объекты. В C# мы создаем JSON-объект, сериализуем его в строку и отправляем через ZeroMQ. В Python мы принимаем сообщение, десериализуем его в объект Python и обрабатываем полученный JSON.