温馨提示×

java调用c#数据如何反序列化

小樊
81
2024-12-01 14:49:17
栏目: 编程语言

要在Java中调用C#数据进行反序列化,你需要使用JSON作为数据交换格式。这里是一个简单的示例,展示了如何在Java中调用C#服务并使用JSON进行数据交换。

首先,我们需要创建一个C# Web API服务,该服务将返回一个JSON字符串。在这个例子中,我们将创建一个简单的C#控制台应用程序,它包含一个HTTP GET方法,返回一个JSON字符串。

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace CSharpWebApiService
{
    [ApiController]
    [Route("api/[controller]")]
    public class DataController : ControllerBase
    {
        [HttpGet]
        public async Task<IActionResult> Get()
        {
            var data = new { Value1 = "Hello", Value2 = 42 };
            return Ok(data);
        }
    }
}

接下来,我们需要创建一个Java客户端来调用这个C#服务并反序列化返回的JSON字符串。我们将使用HttpClient来调用服务,并使用org.json库来处理JSON数据。

首先,将以下依赖项添加到Java项目的pom.xml文件中(如果你使用的是Maven):

<dependencies>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20210307</version>
    </dependency>
</dependencies>

然后,创建一个Java类来表示从C#服务返回的数据:

public class MyData {
    private String value1;
    private int value2;

    // Getters and setters
    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

    public int getValue2() {
        return value2;
    }

    public void setValue2(int value2) {
        this.value2 = value2;
    }
}

最后,创建一个Java类来调用C#服务并反序列化JSON数据:

import org.json.JSONObject;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class JavaClient {
    public static void main(String[] args) throws IOException, InterruptedException {
        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("http://localhost:5000/api/data"))
                .build();

        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
        String jsonResponse = response.body();

        JSONObject jsonObject = new JSONObject(jsonResponse);
        MyData myData = new MyData();
        myData.setValue1(jsonObject.getString("Value1"));
        myData.setValue2(jsonObject.getInt("Value2"));

        System.out.println("Value1: " + myData.getValue1());
        System.out.println("Value2: " + myData.getValue2());
    }
}

在这个示例中,我们首先创建了一个HttpClient实例,然后使用HttpRequest对象构建一个HTTP GET请求。接下来,我们使用HttpClientsend方法发送请求,并将响应体字符串获取。然后,我们使用JSONObject类将JSON字符串转换为Java对象。最后,我们将反序列化后的数据打印到控制台。

0