2016-06-28 2 views
0

내가 여기에 JSON의 libary를 다운로드 오전에 대해 정의 된 매개 변수가없는 생성자 없습니다 : http://www.pozzware.com/pozzware/Corsi/Programmazione/VB.NET/JSON%20Library.aspxvb.net이 객체

이 내 프로젝트에 내 클래스 :

Imports PW.JSON 

Public Class Prova 

Private _id As Integer 
Private _name As String 
Private _valido As Boolean 
Private _subObject As Prova 
Private _numero As Integer 
Private _numeroDec As Double 
Private _array() As String 

Public Property ID() As Integer 
    Get 
     Return _id 
    End Get 
    Set(ByVal value As Integer) 
     _id = value 
    End Set 
End Property 

Public Property Name() As String 
    Get 
     Return _name 
    End Get 
    Set(ByVal value As String) 
     _name = value 
    End Set 
End Property 

Public Property Valido() As Boolean 
    Get 
     Return _valido 
    End Get 
    Set(ByVal value As Boolean) 
     _valido = value 
    End Set 
End Property 

Public Property SubObject() As Prova 
    Get 
     Return _subObject 
    End Get 
    Set(ByVal value As Prova) 
     _subObject = value 
    End Set 
End Property 

Public Property NumeroDec() As Double 
    Get 
     Return _numeroDec 
    End Get 
    Set(ByVal value As Double) 
     _numeroDec = value 
    End Set 
End Property 

Public Property Array() As String() 
    Get 
     Return _array 
    End Get 
    Set(ByVal value As String()) 
     _array = value 
    End Set 
End Property 

Public Sub New(ByVal ID As Integer, ByVal Name As String) 
    _id = ID 
    _name = Name 
End Sub 

Public Function SomeMethod() As String 
    Return "Method: " & _id 
End Function 

End Class 

가 그리고 이것은 내 코드입니다 :

Sub PasteJsonExam() 
    Dim strJSON As String = "{""NumeroDec"": 100.34, ""Name"": ""Nome Object"", " & _ 
          " ""Array"": [""A"", ""E"", ""I"", ""O"", ""U""], " & _ 
          " ""SubObject"": {""NumeroDec"": 0, ""Name"": ""Nome - SubObject"", " & _ 
          " ""Array"": null, ""SubObject"": null, ""Valido"": false, ""ID"": 2}, " & _ 
          " ""Valido"": true, ""ID"": 1}" 

    Dim objprova As Prova 
    objprova = PW.JSON.JSONHelper.StringToObject(strJSON, GetType(Prova)) 
    MsgBox(objprova.Name) 
    MsgBox(objprova.SubObject.Name) 
End Sub 

난 오류가있어 내가 그 하위 호출 할 때 :

이 개체에 대해 정의 된 매개 변수없는 생성자가 없습니다. 이 라인에서

:

objprova = PW.JSON.JSONHelper.StringToObject(strJSON, GetType(Prova)) 

나는 그래서 내가 그 오류가 발생했습니다 왜 누군가가 나를 위해 설명 희망 나는이 문제를 어떻게 해결할 수 VB.net의 professonal 아닙니다.

+2

사용 NewtonJson : 라이브러리 아마 이것은 기본 생성자를 가진 클래스입니다 반사

를 사용하기 때문입니다. Install-Package Newtonsoft.Json –

+0

매개 변수없이 Sub New()를 추가하십시오. –

+0

ASP.NET 웹 API 프로젝트를 포함한 거의 모든 사람들이 JSon.NET을 사용합니다. 왜 6 년 전에 작성된 스 니펫을 사용하려고합니까? 예를 들어 해당 코드 단편은 날짜를 처리하지 않습니다 –

답변

1

아마도 StringToObject 메서드는 Prova의 인스턴스를 만들려고합니다. 이것은 형식의 기본 (매개 변수없는) 생성자를 호출하여 수행합니다. 그러나 사용자가 정의한 클래스의 모든 매개 변수가없는 생성자가없는, 당신 만이 :

Public Class Prova 
    ' Other fields and methods 
    Public Sub New() 
    End Sub 

    Public Sub New(ByVal ID As Integer, ByVal Name As String) 
     _id = ID 
     _name = Name 
    End Sub 
    ' Other fields and methods 
End Class 
+0

친애하는 여러분! 제발 어떻게 고칠 수 있을까요? –

+0

@ DươngTrần 게시 할 때'Public Sub New()'와 같은 매개 변수없는 생성자를 정의해야합니다. –

+0

친애하는 여러분, 내가 편집 할 수 없습니다. Sub subJsonExam() 새로운 obaProva (1, "Nome Object") objprova.Array = Split ("AEIOU") objprova.NumeroDec = 100.34 objprova.SubObject = 새 PROVA (2, "놈 - 하위 객체") objprova.Valido = TRUE있는 MsgBox은 (PW.JSON.JSONHelper.ObjectToString은 (objprova)) 종료 Sub' –

0

그럼 내가 생각 :

Public Class Prova 
    ' Other fields and methods 
    Public Sub New(ByVal ID As Integer, ByVal Name As String) 
     _id = ID 
     _name = Name 
    End Sub 
    ' Other fields and methods 
End Class 

당신이 같은 매개 변수가없는 생성자를 정의하는 데 필요한 방법 일을하도록하려면 사용하고있는 라이브러리가 최선의 선택은 아니지만 프로그램을 실행하려면 (매개 변수없는 생성자) 기본 생성자를 추가해야합니다. 대신

Imports PW.JSON 

Public Class Prova 

Private _id As Integer 
Private _name As String 
Private _valido As Boolean 
Private _subObject As Prova 
Private _numero As Integer 
Private _numeroDec As Double 
Private _array() As String 

Public Property ID() As Integer 
    Get 
     Return _id 
    End Get 
    Set(ByVal value As Integer) 
     _id = value 
    End Set 
End Property 

Public Property Name() As String 
    Get 
     Return _name 
    End Get 
    Set(ByVal value As String) 
     _name = value 
    End Set 
End Property 

Public Property Valido() As Boolean 
    Get 
     Return _valido 
    End Get 
    Set(ByVal value As Boolean) 
     _valido = value 
    End Set 
End Property 

Public Property SubObject() As Prova 
    Get 
     Return _subObject 
    End Get 
    Set(ByVal value As Prova) 
     _subObject = value 
    End Set 
End Property 

Public Property NumeroDec() As Double 
    Get 
     Return _numeroDec 
    End Get 
    Set(ByVal value As Double) 
     _numeroDec = value 
    End Set 
End Property 

Public Property Array() As String() 
    Get 
     Return _array 
    End Get 
    Set(ByVal value As String()) 
     _array = value 
    End Set 
End Property 

' This is the default constructor the library should need' 
Public Sub New() 
End Sub 

Public Sub New(ByVal ID As Integer, ByVal Name As String) 
    _id = ID 
    _name = Name 
End Sub 

Public Function SomeMethod() As String 
    Return "Method: " & _id 
End Function 

End Class 
관련 문제