Hi Users,
I am trying to parse the JSON using Below link:
I copied the Newtonsoft.Json.dll into client and server bin folder, also added reference in AOT.
Parsing of JSON works fine in simple job running, but not working in Batch Job.
Getting below error:
on the line number 50 in the code below.
private anytype traversePath(str path, Newtonsoft.Json.Linq.JContainer obj = jObject){ List pathElements; ListEnumerator le; Newtonsoft.Json.Linq.JValue value; Newtonsoft.Json.Linq.JToken token; Newtonsoft.Json.Linq.JTokenType thisType, nestedType; Newtonsoft.Json.Linq.JObject newObject; Newtonsoft.Json.Linq.JArray newArray; str current, thisTypeString, nestedTypeString; #define.JObject(/Newtonsoft.Json.Linq.JObject/) #define.JArray (/Newtonsoft.Json.Linq.JArray/) ; pathElements = strSplit(path, @/.////); le = pathElements.getEnumerator(); if (le.moveNext()) { current = le.current(); thisType = obj.GetType(); thisTypeString = thisType.ToString(); switch (thisTypeString) { case #JObject: token = obj.get_Item(current); break; case #JArray: token = obj.get_Item(str2int(current) - 1); break; default: return null; } if (token) { nestedType = token.GetType(); nestedTypeString = nestedType.ToString(); if (nestedTypeString != #JObject && nestedTypeString != #JArray) { switch (thisTypeString) { case #JArray: return obj.get_Item(str2int(current) - 1); case #JObject: return obj.get_Item(current); default: return null; } } switch (nestedTypeString) { case #JObject: newObject = Newtonsoft.Json.Linq.JObject::FromObject(token); return this.traversePath(strDel(path, 1, strLen(current) + 1), newObject); case #JArray: newArray = Newtonsoft.Json.Linq.JArray::FromObject(token); return this.traversePath(strDel(path, 1, strLen(current) + 1), newArray); default: return null; } } else { return null; } } else { return null; }}
If you know anything about the issue, Plese reply.
Thank you,
Raj Borad
OK, I see. GetType() returns System.Type, but you're trying to assign it to a variable of type Newtonsoft.Json.Linq.JTokenType, which isn't possible. I think you mean Type property, which you can access by get_Type() method. GetType() has a similar name, but it's something completely different. It's a method inherited from System.Object that gives you an instance of System.Type describing the type of the object in the variable.
private anytype traversePath(str path,
Newtonsoft.Json.Linq.JContainer obj = jObject)
List pathElements;
ListEnumerator le;
Newtonsoft.Json.Linq.JValue value;
Newtonsoft.Json.Linq.JToken token;
Newtonsoft.Json.Linq.JTokenType thisType,
nestedType;
Newtonsoft.Json.Linq.JObject newObject;
Newtonsoft.Json.Linq.JArray newArray;
str current,
thisTypeString,
nestedTypeString;
#define.JObject("Newtonsoft.Json.Linq.JObject")
#define.JArray ("Newtonsoft.Json.Linq.JArray")
pathElements = strSplit(path, @".\/");
le = pathElements.getEnumerator();
if (le.moveNext())
current = le.current();
thisType = obj.GetType();
thisTypeString = thisType.ToString();
switch (thisTypeString)
case #JObject:
token = obj.get_Item(current);
break;
case #JArray:
token = obj.get_Item(str2int(current) - 1);
break;
default:
return null;
if (token)
nestedType = token.GetType();
nestedTypeString = nestedType.ToString();
if (nestedTypeString != #JObject && nestedTypeString != #JArray)
switch (thisTypeString)
case #JArray:
return obj.get_Item(str2int(current) - 1);
case #JObject:
return obj.get_Item(current);
default:
return null;
switch (nestedTypeString)
case #JObject:
newObject = Newtonsoft.Json.Linq.JObject::FromObject(token);
return this.traversePath(strDel(path, 1, strLen(current) + 1), newObject);
case #JArray:
newArray = Newtonsoft.Json.Linq.JArray::FromObject(token);
return this.traversePath(strDel(path, 1, strLen(current) + 1), newArray);
default:
return null;
return null;
return null;
Subscribe to
Stay up to date on forum activity by subscribing. You can also customize your in-app and email
Notification settings
across all subscriptions.
Subscribe