【发布时间】:2020-06-10 10:25:11
【问题描述】:
我有一个 vb.net 程序,它将 JSON 发布到 Web API 并返回一个结果。 当 API 返回错误时,我需要创建一个错误字符串以在程序中显示。 我正在使用 Newtonsoft.Json
返回的错误是。 {"message":"出现一个或多个输入异常。","errors":[{"message":"\"%fieldName\" 为必填项。输入后重试。","parameters":{"fieldName ":"name"}},{"message":"\"%fieldName\" 为必填项。输入并重试。","parameters":{"fieldName":"base64_encoded_data"}},{"message": "\"%fieldName\" 为必填项。输入并重试。","parameters":{"fieldName":"type"}}],"trace":"TraceMessageHasBeenDeleted {main}"}
我已经提取了消息
Dim responseFromAPI As HttpResponseMessage
Dim rawResponseFromAPI As String
Dim responseFromAPIStream As Stream
Dim responseFromAPIReader As StreamReader
Dim responseFromAPIObject As JObject
' Check Result
If responseFromAPI.IsSuccessStatusCode = False Then
' Add Error to Error Collection
responseFromAPIStream = Await responseFromAPI.Content.ReadAsStreamAsync()
responseFromAPIReader = New StreamReader(responseFromAPIStream)
rawResponseFromAPI = responseFromAPIReader.ReadToEnd()
responseFromAPIObject = JObject.Parse(rawResponseFromAPI)
' Check for Message
Console.WriteLine(responseFromAPIObject("message").ToString())
CustomErrorCollection.AddError(responseFromAPIObject("message").ToString())
End If
这将返回消息“发生了一个或多个输入异常。”
但我还需要从“错误”部分中提取所有“消息”,并将“%fieldName”替换为“fieldName”的参数
所以我正在寻找的最终结果是一个多行字符串。
"
发生了一个或多个输入异常。
名称是必需的。输入并重试。
base64_encoded_data 是必需的。输入并重试。
类型是必需的。输入并重试。”
可能有一种非常简单的方法可以实现这一点,但经过几个小时的搜索和试验,我一无所获。
非常感谢
【问题讨论】:
-
您只返回对象的
message属性。使用您的调试器检查responseFromAPIObject,您应该会看到还有什么可用的。