My question is basically the same as this one, but unfortunately the answer doesn't work for me.
I'm trying to handle some edge cases, one of which is the case where I receive an unusually large (e.g., 150 million character) json string from my server. I'm using the memory optimization technique described in the json.net docs, but I still get an OutOfMemoryError
in the deserialization step.
What is the correct way to handle large json objects with json.net? I'd settle for setting a max length flag, but I'm not sure how to do that.
Here's my code:
Dim serverResponseStream As Stream = 'GZipWrapperStream response from server
Using sr As StreamReader = New StreamReader(serverResponseStream), _
reader As JsonReader = New JsonTextReader(sr)
Dim serializer As JsonSerializer = New JsonSerializer()
'Out of memory exception here in Deserialize
Dim response = serializer.Deserialize(reader)
End Using
Edit: as per this answer, I have also tried:
Dim a = New JArray()
Using sr As StreamReader = New StreamReader(serverResponseStream), _
reader As JsonReader = New JsonTextReader(sr)
While reader.Read()
If reader.TokenType = JsonToken.StartObject Then
'Out of memory exception here
Dim j = JObject.Load(reader)
a.Add(j)
End If
End While
End Using