0

이 데이터를 object에 저장하려면 안정적인 웹 서비스에서 데이터를 검색하고 싶습니다. 데이터 검색은 원칙적으로 작동하며 JSON 문자열은 텍스트 상자에 표시 될 수 있습니다.JSON을 C에서 비 직렬화하는 방법 #

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using Newtonsoft; 
using System.IO; 
using System.Net; 

namespace Datenbankabfrage 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnGet_Click(object sender, EventArgs e) 
     { 

      // Create a request for the URL. 
      WebRequest request = WebRequest.Create(
       "URL"); 
      // Get the response. 
      WebResponse response = request.GetResponse(); 
      // Get the stream containing content returned by the server. 
      Stream dataStream = response.GetResponseStream(); 
      // Open the stream using a StreamReader for easy access. 
      StreamReader reader = new StreamReader(dataStream); 
      // Read the content. 
      string responseFromServer = reader.ReadToEnd(); 

      Artikel ErsterA = new Artikel(); 

      Newtonsoft.Json.JsonConvert.PopulateObject(responseFromServer, ErsterA); 

      //txtAusgabeAA.Text = responseFromServer; 
      reader.Close(); 
      response.Close(); 
     } 
    } 
} 

Here a picture of the error massage, 어떤 상태 :

- 그러나, 나는 C#에서 사용할 수있는 데이터를 만드는 투쟁 내가 고칠 수없는 나는 그 때 deserialising 일부 연구와 자신의 프로그래밍 후에, 나는 여전히 오류를 얻을 유형 'Newtonsoft.Json.JsonSerializationException`의 처리되지 않은 예외가 Newtonsoft.Json.dll

에서 발생

추가 정보 : 유형 에 JSON 배열을 채울 수 없습니다 'Datenbankabfrage.Artikel'. 경로 ", 라인 1, 어떤 도움에 감사드립니다 1.

위치

+0

무슨 에러가 발생합니까? 해당 정보를 업데이트하십시오. 발생하는 오류를 모르는 경우 도움을 줄 수있는 방법이 없습니다. – Nkosi

+0

'ErsterA'가 직접 생성되기 때문에'Artikel ErsterA = Newtonsoft.Json.JsonConvert.DesrializeObject (responseFromServer)'를 사용하는 것은 어떻습니까? – Nkosi

답변

1

귀하의 문제는 예외 메시지에 의해 설명된다!

유형에 JSON 배열을 채울 수 없습니다 'Datenbankabfrage.Artikel' .

: 경로 "라인 1 위치 배경 1.

, JSON 컨테이너의 두 가지 유형

  • 배열은 값의 정렬 된 모음입니다. 배열은 [ (왼쪽 괄호)로 시작하고 ] (오른쪽 괄호)로 끝납니다. 값은 , (쉼표)로 구분됩니다.

    Json.NET maps .NET IEnumerable, Lists 및 Arrays (사전 제외)를 JSON 배열에 추가합니다.

  • 개체는 이름/값 쌍의 순서가 지정되지 않은 집합입니다. 객체는 { (왼쪽 중괄호)로 시작하고 } (오른쪽 중괄호)로 끝납니다.

    Json.NET mapsArtikel에서 JSON 개체와 같은 열거 할 수없는 .NET 개체.

따라서 예외에서 그것은 (하지 귀하의 질문에 포함)하여 JSON 문자열의 루트 컨테이너가 배열이라고해야하며, 그렇게 JsonConvert.PopulateObject()으로 기존의 비 열거 POCO에 채울 수 없습니다.

는 대신, JSON은 다음과 같이 직렬화 할 필요가 :

var list = JsonConvert.DeserializeObject<List<Artikel>>(responseFromServer); 
+0

안녕하세요, dbc 고마워요 !!!! 그것은 지금 잘 작동합니다! :) – MS4IM

관련 문제