ASP.NET Core 8-Web-API: Zeichenfolge kann nicht in JSON-Objekt konvertiert werdenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 ASP.NET Core 8-Web-API: Zeichenfolge kann nicht in JSON-Objekt konvertiert werden

Post by Anonymous »

Ich erhalte die JSON-Zeichenfolge von einem API-Aufruf eines Drittanbieters, indem ich die folgende C#-Methode in meiner API verwende. Jetzt muss ich dies über meine API zurückgeben.

Code: Select all

using var responseStream =  response.Content.ReadAsStreamAsync().Result;
JSON-Daten empfangen:

Code: Select all

{
"resources":[
{
"asset_id":"0be6920b67900d9dcb692dafc8752144",
"public_id":"312555/Deep_Sleep_iv1xdf",
"format":"png",
"version":1735387533,
"resource_type":"image",
"type":"upload",
"created_at":"2024-12-28T12:05:33Z",
"bytes":58989,
"width":612,
"height":412,
"asset_folder":"312555",
"display_name":"Deep Sleep",
"url":"http://res.cloudinary.com/catco-mls/image/upload/v1735387533/312555/Deep_Sleep_iv1xdf.png",
"secure_url":"https://res.cloudinary.com/catco-mls/image/upload/v1735387533/312555/Deep_Sleep_iv1xdf.png"
},
{
"asset_id":"8726add67eb8a3b7462a078f335acddc",
"public_id":"312555/stage3negotiation_e5g3z9",
"format":"jpg",
"version":1735387420,
"resource_type":"image",
"type":"upload",
"created_at":"2024-12-28T12:03:40Z",
"bytes":1410672,
"width":2000,
"height":1333,
"asset_folder":"312555",
"display_name":"stage3negotiation",
"url":"http://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/stage3negotiation_e5g3z9.jpg",
"secure_url":"https://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/stage3negotiation_e5g3z9.jpg"
},
{
"asset_id":"5255df4456604743b34769c8105f1552",
"public_id":"312555/TROPICAT-Photo-14-11-2024-1-04-31-pm_kndjym",
"format":"jpg",
"version":1735387420,
"resource_type":"image",
"type":"upload",
"created_at":"2024-12-28T12:03:40Z",
"bytes":131855,
"width":600,
"height":800,
"asset_folder":"312555",
"display_name":"TROPICAT-Photo-14-11-2024-1-04-31-pm",
"url":"http://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/TROPICAT-Photo-14-11-2024-1-04-31-pm_kndjym.jpg",
"secure_url":"https://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/TROPICAT-Photo-14-11-2024-1-04-31-pm_kndjym.jpg"
},
{
"asset_id":"c62a24332bd62b595672f5086772751e",
"public_id":"312555/stage4undercontract_iwglqm",
"format":"webp",
"version":1735387420,
"resource_type":"image",
"type":"upload",
"created_at":"2024-12-28T12:03:40Z",
"bytes":99008,
"width":1600,
"height":1060,
"asset_folder":"312555",
"display_name":"stage4undercontract",
"url":"http://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/stage4undercontract_iwglqm.webp",
"secure_url":"https://res.cloudinary.com/catco-mls/image/upload/v1735387420/312555/stage4undercontract_iwglqm.webp"
}
],
"total_count":4,
"next_cursor":null
}
.NET-Klasse zum Speichern dieser Informationen:

Code: Select all

public class Cloudinary
{
public class Resource
{
public string asset_id { get; set; }
public string public_id { get; set; }
public string format { get; set; }
public int version { get; set; }
public string resource_type { get; set; }
public string type { get; set; }
public DateTime created_at { get; set; }
public int bytes { get; set; }
public int width { get; set; }
public int height { get; set;  }
public string asset_folder { get; set; }
public string display_name { get; set; }
public string url { get; set; }
public string secure_url { get; set; }
}

public class Root
{
public List resources { get; set; }
public int total_count { get; set; }
public object next_cursor { get; set; }
}
}
Ich habe mehrere Optionen ausprobiert, hier sind einige.
Option 1

Code: Select all

var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();

var result = response.Content.ReadAsStringAsync().Result;

var data =  JsonSerializer.Deserialize(result);
Ich erhalte diese Fehlermeldung, wenn ich diesen Code versuche:

Bei der Verarbeitung der Anfrage ist eine nicht behandelte Ausnahme aufgetreten.

JsonException: Der JSON-Wert konnte nicht in System.Collections.Generic.List`1[Core.LibraryAdmin.Models.Cloudinary+Root] konvertiert werden. Pfad: $ | Zeilennummer: 0 | BytePositionInLine: 1.

System.Text.Json.ThrowHelper.ThrowJsonException_DeserializeUnableToConvertValue(Type propertyType)

Option 2< /strong>

Code: Select all

if (response.IsSuccessStatusCode)
{
using var responseStream =  response.Content.ReadAsStreamAsync().Result;

Cloudinary.Resource? resource = await JsonSerializer.DeserializeAsync(responseStream);

return resource;
}
Ich erhalte keine Fehlermeldung, wenn ich diesen Code verwende, aber er liefert das gewünschte Ergebnis. Alle Felder sind null, wenn er von der API zurückgegeben wird.
Meine eigentliche Methode ist:

Code: Select all

public async static Task GetImages(string BoatId)
Bitte um Rat, was mache ich falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post