I need to serialize a class which it's source code cannot be changed (take this as a fact), and it's from a different assembly. It has only one constructor
public class MyObject
{
string _s;
int _i;
internal MyObject(string s, int i)
{
// ...
}
}
JsonConvert.SerializeObject(object)
fails of course because of this. I wonder if there is a way to use Json.NET to serialize this class without having to adding code or even tags to it.
If you have a parameterless constructor, you should be able to do this by adding the following setting:
JsonSerializerSettings settings = new JsonSerializerSettings()
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
var serializedJson = JsonConvert.DeserializeObject<MyObject>(jsonString, settings);
Update after question edit:
If you don't have any public
constructors and you don't have a parameterless constructor, then I only know of 2 options:
[JsonConstructor]
attribute to your internal
constructor (which doesn't seem an option in your case as you cannot edit the class).