@ludie
Существует несколько способов передачи JSON из C# в Python, но один из самых простых – это использовать HTTP-запросы и API.
Пример:
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 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#-код.
@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.