Der Aufruf der Remove()-Methode für ein Newtonsoft.Json.Linq.JObject in der IronPython-App löst den Fehler „NoneType istPython

Python-Programme
Anonymous
 Der Aufruf der Remove()-Methode für ein Newtonsoft.Json.Linq.JObject in der IronPython-App löst den Fehler „NoneType ist

Post by Anonymous »

Beim Debuggen der Ironpython-App in Visual Studio habe ich bestätigt, dass die JObject-Instanz „extendObj“ nicht null ist. Warum löst die Methode „extendObj.Remove“ den Fehler aus? Im Fenster „Watch 1“ kann ich auf Eigenschaften in der Variable „extendObj“ zugreifen. Kennt jemand den Grund? Ich bin mit Ironpython nicht sehr vertraut.
Image

Image

Während des Debuggens ist ein Fehler aufgetreten 39 und der Ablaufverfolgungsstapel ist:

Es ist ein Fehler aufgetreten: Microsoft.Scripting.ArgumentTypeException: NoneType ist nicht aufrufbar Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3) und
System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)在
$6.DataChanged$37(PythonFunction $function, Object e) 位置 E:\Codes\DemoSln\PythonApplication\Empty.py:行号 39

Mein Unternehmen hat eine App mit .net entwickelt, die App integrierte Ironpython. Der Quellcode ist nur ein Plugin.
hier ist mein Ironpython-Quellcode:

Code: Select all

import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')

from System import *

from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.List import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Core.DynamicForm import *
from Newtonsoft.Json.Linq import JObject

def DataChanged(e):
if e.Field.Key == "F_QXQV_StartGotTime":
try:
startGotTime = this.View.Model.GetValue("F_QXQV_StartGotTime", e.Row);
originalExtendProp =  this.View.Model.GetValue("FExtendProperty", e.Row);
if startGotTime is not None:
origin = DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
diff = startGotTime.ToUniversalTime() - origin;
timstamp = Convert.ToInt64(diff.TotalMilliseconds).ToString();
if originalExtendProp is None or String.IsNullOrWhiteSpace(originalExtendProp):
this.View.Model.SetValue("FExtendProperty", String.Format("{{{0}  \"startGotTime\": \"{1}\" {0}}}", Environment.NewLine, timstamp), e.Row);
else:
extendObj = JObject.Parse(originalExtendProp);
extendObj["startGotTime"] = timstamp;
this.View.Model.SetValue("FExtendProperty", String.Format("{0}", extendObj), e.Row);
else:
if originalExtendProp is not None:
extendObj = JObject.Parse(originalExtendProp);
extendObj.Remove("startGotTime");
if extendObj.HasValues:
this.View.Model.SetValue("FExtendProperty", String.Format("{0}", extendObj), e.Row);
else:
this.View.Model.SetValue("FExtendProperty", "", e.Row);
except Exception as e:
this.View.ShowMessage(String.Format("Error occured: {0}", e));

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post