تسلسل سلمان من العميل في json.net 3.5b2 في vb.net
سؤال
لدي اختبار حالة وجود مشكلة أعاني, أساسا أنا إنشاء سلمان الكائن على الملقم وتوفير العودة إلى أياكس دعا على جانب العميل.أنه يعمل بشكل جيد ، ومع ذلك ، عندما أحاول أن أعيدها و إلغاء تسلسل الخادم الجانب أحصل على الاستثناء التالي:
لا parameterless منشئ تحديد نوع 'System.سلسلة'.
النظام.MissingMethodException في النظام.ويب.البرنامج النصي.التسلسل.ObjectConverter.ConvertDictionaryToObject(يقع
2 dictionary, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at system.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at system.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(Object o, Type type, JavaScriptSerializer serializer) at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary
2 rawParams) في النظام.ويب.البرنامج النصي.الخدمات.WebServiceMethodData.CallMethodFromRawParams(كائن الهدف يقع2 parameters) at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary
2 rawParams) في النظام.ويب.البرنامج النصي.الخدمات.RestHandler.ExecuteWebServiceCall(HttpContext السياق ، WebServiceMethodData methodData)
الافتراضي.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script src="http://www.json.org/json2.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-latest.pack.js" type="text/javascript" ></script>
<script type="text/javascript">
$(document).ready(function(){
$.theDate = {};
$("#Button1").click(function(){
$.ajax({
type: 'POST',
url: 'default.aspx/getDate',
data: '{}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(json){
var date = eval("("+json.d+")");
$.theDate = date;
var pdate = eval("("+json.d.replace(/"\\\/Date\(([0-9]+)[0-9-]+\)\\\/"/gi, 'new Date(parseInt($1,10))')+")");
$("#now").val(date.now);
$("#pnow").val(pdate.now);
$("#strnow").val(date.strnow);
},
error: function(xmlhr, status, err){
console.error(arguments);
var response = eval("("+xmlhr.responseText+")");
console.log(response);
}
});
});
$("#Button2").click(function(){
var json = JSON.stringify($.theDate);
json = '{"json":'+json+'}';
$.ajax({
type:'POST',
url:'default.aspx/deserialize',
data: json,
contentType:'application/json; charset=utf-8',
dataType: 'json',
success: function(json){
var date = eval("("+json.d+")");
console.log(date);
},
error: function(xmlhr, status, err){
console.error(arguments);
var response = eval("("+xmlhr.responseText+")");
console.log(response);
}
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Get Date" /><br />
date.now: <input type="text" id="now" value="" style="width:20em" /><br />
date.now processed: <input type="text" id="pnow" value="" style="width:30em"><br />
date.strnow: <input type="text" id="strnow" value="" style="width:20em"/>
<input id="Button2" type="button" value="Send Date" /><br />
</div>
</form>
</body>
</html>
الافتراضي.aspx.vb
Imports System.Web.Services
Imports Newtonsoft.Json
Partial Class _Default
Inherits System.Web.UI.Page
Private Class _date
<JsonProperty()> Public now As New Date
<JsonProperty()> Public strnow As String
Public Sub New()
now = Date.Today
strnow = Date.Today.ToLongDateString
End Sub
End Class
<WebMethod()> Public Shared Function getDate() As String
Dim theDate As New _date
Dim strJson As String
strJson = JsonConvert.SerializeObject(theDate)
Return strJson
End Function
<WebMethod()> Public Shared Function deserialize(ByVal json As String) As String
Dim newDate As _date
Try
newDate = JsonConvert.DeserializeObject(json, GetType(_date))
Return "{""done"":true}"
Catch ex As Exception
Throw ex
End Try
End Function
End Class
فما استقاموا لكم فاستقيموا نقدر نساعد على ما أفعله خطأ هنا.شكرا مقدما.
المحلول
اضطر إلى تغيير
Private Class _date
إلى
Public Class _date
و
<WebMethod()> Public Shared Function deserialize(ByVal json As String) As String
إلى
<WebMethod()> Public Shared Function deserialize(ByVal json As _date) As String