मैं विंडोज फॉर्म में विजुअल स्टूडियो 2017 में एक प्रोग्राम बना रहा हूं - क्षमा करें, लेकिन मुझे पता है कि केवल यही एक चीज है - वैसे भी, इसके लिए ज्यादातर सब कुछ सी # है, इसलिए मुझे सहायता प्राप्त करने में परेशानी हो रही है।

मैंने Azure कॉग्निटिव ट्रांसलेशन सेवाओं से कनेक्ट करने के लिए एक C# प्रोग्राम के लिए Microsoft द्वारा प्रदान किए गए उदाहरण का अनुवाद किया है, साइन अप किया है, मेरी सभी कुंजियाँ प्राप्त की हैं, आदि।

जब मैं कोड चलाता हूं, तो मुझे निम्न त्रुटि मिलती है:

Newtonsoft.Json.JsonSerializationException:
'डिसेरिएलाइज़ नहीं किया जा सकता' वर्तमान JSON ऑब्जेक्ट (जैसे {"name":"value"}) टाइप . में System.Collections.Generic.List1[System.Collections.Generic.Dictionary2[System.String,System.Collections.Generic.List1[System.Collections.Generic.Dictionary2[System.String,System.String]]]]]' क्योंकि प्रकार को deserialize करने के लिए एक JSON सरणी (जैसे [1,2,3]) की आवश्यकता होती है सही ढंग से।
इस त्रुटि को ठीक करने के लिए या तो JSON को JSON सरणी में बदलें (जैसे [१,२,३]) या डिसेरिएलाइज़्ड प्रकार को बदल दें ताकि यह सामान्य हो जाए .NET प्रकार (उदाहरण के लिए एक आदिम प्रकार जैसे पूर्णांक नहीं, संग्रह नहीं एक सरणी या सूची की तरह टाइप करें) जिसे JSON से डिसेरिएलाइज़ किया जा सकता है वस्तु। JsonObjectAttribute को इसे बाध्य करने के लिए प्रकार में भी जोड़ा जा सकता है एक JSON ऑब्जेक्ट से deserialize करने के लिए। पथ 'त्रुटि', पंक्ति 1, स्थिति 9.'

मैंने कई अलग-अलग स्रोतों से सूचीबद्ध करने के लिए बहुत सी चीजों की कोशिश की है। मुझे JSON के बारे में बहुत कुछ पता नहीं है और मैं उपरोक्त मुद्दे को हल करने के लिए कोड के साथ मदद मांग रहा हूं।

Public Class DetectedLanguage
    Public Property language As String
    Public Property score As Double
End Class

Public Class Translation
    Public Property text As String
    Public Property two As String
End Class

Public Class Example
    Public Property detectedLanguage As DetectedLanguage
    Public Property translations As Translation()
End Class

Dim textToTranslate As String = root
Dim fromLanguage As String
Dim fromLanguageCode As String = cabbr

Dim toLanguageCode As String = "en"

Dim endpoint As String = String.Format(TEXT_TRANSLATION_API_ENDPOINT, "translate")
Dim uri As String = String.Format(endpoint & "&from={0}&to={1}", fromLanguageCode, toLanguageCode)
Dim body As System.Object() = New System.Object() {New With {Key .Text = textToTranslate}}
Dim requestBody = JsonConvert.SerializeObject(body)

Using client = New HttpClient()
    Using request = New HttpRequestMessage()
        request.Method = HttpMethod.Post
        request.RequestUri = New Uri(uri)
        request.Content = New StringContent(requestBody, Encoding.UTF8, "application/json")
        request.Headers.Add("Ocp-Apim-Subscription-Key", COGNITIVE_SERVICES_KEY)
        request.Headers.Add("Ocp-Apim-Subscription-Region", "westus")
        request.Headers.Add("X-ClientTraceId", Guid.NewGuid().ToString())
        Dim response = client.SendAsync(request).Result
        Dim responseBody = response.Content.ReadAsStringAsync().Result
        Dim result = JsonConvert.DeserializeObject(Of List(Of Dictionary(Of String, List(Of Dictionary(Of String, String)))))(responseBody)
        Dim translation = result(0)("translations")(0)("text")
        rtRoot.Text = translation
    End Using
End Using

मैंने अपना JSON कोड पेस्ट करने और कक्षाएं प्राप्त करने के लिए पहले ही jsonutil साइट का उपयोग किया है।

यहाँ मेरी JSON सामग्री है:

[
   {
      "detectedLanguage":{
         "language":"nl",
         "score":1.0
      },
      "translations":[
         {
            "text":"bord vervangen en uitvoerig getest",
            "to":"nl"
         },
         {
            "text":"Board replaced and tested extensively",
            "to":"en"
         }
      ]
   }
]
1
Fredderf81 18 अप्रैल 2019, 22:52

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है!!! इसके साथ खेलने के बाद - जिमी - आपका समाधान काम किया !!! बहुत - बहुत धन्यवाद! मुझे निम्नलिखित पंक्तियों को हटाना पड़ा: request.Headers.Add("Ocp-Apim-Subscription-Region", "westus") request.Headers.Add("X-ClientTraceId", Guid.NewGuid().ToString() )

0
Fredderf81 24 अप्रैल 2019, 13:50