C# 使用C进行JSON数据反序列化和序列化时处理.png图像#

C# 使用C进行JSON数据反序列化和序列化时处理.png图像#,c#,json,serialization,png,jpeg,C#,Json,Serialization,Png,Jpeg,我正在尝试从WikipediaAPI反序列化json数据。首先,我需要反序列化一些特定数据,如标题、摘录、图像、坐标等。反序列化后,我需要再次序列化这些数据以获得结果输出。但我遇到的问题是维基百科API有一些png格式的图像。但在我的代码中,我只能将jpg图像转换为哈希格式。所以,当.png文件出现时,它将进入异常处理,并且没有任何内容显示为输出。我想知道我如何写我的代码,可以转换jpg和png图像。我的代码如下- using (WebClient client = new WebClient(

我正在尝试从WikipediaAPI反序列化json数据。首先,我需要反序列化一些特定数据,如标题、摘录、图像、坐标等。反序列化后,我需要再次序列化这些数据以获得结果输出。但我遇到的问题是维基百科API有一些png格式的图像。但在我的代码中,我只能将jpg图像转换为哈希格式。所以,当.png文件出现时,它将进入异常处理,并且没有任何内容显示为输出。我想知道我如何写我的代码,可以转换jpg和png图像。我的代码如下-

using (WebClient client = new WebClient())
{
    try
    {
        var response = client.DownloadString("https://en.wikipedia.org/w/api.php?format=json&action=query&redirects=1&generator=geosearch&prop=extracts|coordinates|pageimages&ggslimit=20&ggsradius=1000&ggscoord=48.47|9.11&&formatversion=2&exintro=1&explaintext=1&exlimit=20&coprop=type|dim|globe&colimit=20&piprop=thumbnail&pithumbsize=400&pilimit=20"); 
        var json = JsonConvert.DeserializeObject<RootObject>(response);

        List<Poi> poi = new List<Poi>();

        foreach (var page in json.query.pages) //foreach statement cannot operate on variables of type 'List_Places_Geo.RootObject' because 'List_Places_Geo.RootObject' does not contain a public definition for 'GetEnumerator'
        {
            Poi obj = new Poi();
            obj.Title = page.title;//what to write in this line to get the title;
            obj.Description =page.extract ;

            var Image = new PoiImage();
            var ImgfirstKey = page.thumbnail.source;
            Image.ImageID = string.Format("{0:X}.jpg", ImgfirstKey.GetHashCode());

            obj.Images = new List<PoiImage> {Image};

            obj.Lat = page.coordinates.First().lat;
            obj.Lon = page.coordinates.First().lon;

            poi.Add(obj);
        }

        string result = JsonConvert.SerializeObject(poi, Formatting.Indented);
        Console.WriteLine(result);
    }
    catch(Exception)
    {
        Console.WriteLine("Error");
    }
}

试试这个代码。可能对你有帮助。直接从路径获取图像(您肯定会获得每个
图像的路径
),并将其更改为
Base64
encoded
String
,然后将其传递到
JSONObject

在另一端,使用
Base64
类解码器对其进行解码,并将其作为文件写入。 这里有一个
code
encode
直接从
Path

using (Image image = Image.FromFile(Path))
    {                 
        using (MemoryStream m = new MemoryStream())
        {
            image.Save(m, image.RawFormat);
            byte[] imageBytes = m.ToArray();

            // Convert byte[] to Base64 String
            string base64String = Convert.ToBase64String(imageBytes);
            return base64String;
        }                  
    }
using (Image image = Image.FromFile(Path))
    {                 
        using (MemoryStream m = new MemoryStream())
        {
            image.Save(m, image.RawFormat);
            byte[] imageBytes = m.ToArray();

            // Convert byte[] to Base64 String
            string base64String = Convert.ToBase64String(imageBytes);
            return base64String;
        }                  
    }