JSON 来自字符串化值的对象
JSON object from Stringified value
这是我试图将其转换为 JSON 字符串并进行字符串化的非常简单的 C# class 对象:
public class rTestObject
{
public rTestObject()
{
Name = "Hello";
State = 7;
}
public string Name { get; set; }
public int State { get; set; }
}
我调用以下静态方法:
// Json.net
// from Newtonsoft.Json.dll
// version 8.0.2.19309
//
using Newtonsoft.Json;
public static string ConvertToJSON<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
产生以下(预期)输出:
{"Name":"Hello","State":7}
我调用以下静态方法来字符串化我的 JSON 字符串
public static string Stringify(string json)
{
return JsonConvert.ToString(json);
}
产生以下(我认为这是预期的??)输出:
"{\"Name\":\"Hello\",\"State\":7}"
我的问题如何获得:
"{\"Name\":\"Hello\",\"State\":7}"
回到 rTestObject?
这是我尝试过的:
尝试 1
public static T ConvertFromStringifiedJSON<T>(string stringifiedJSON)
{
Newtonsoft.Json.Linq.JObject j = Newtonsoft.Json.Linq.JObject.Parse(stringifiedJSON);
return ConvertFromJSON<T>(j.ToString());
}
这里是例外:
{"Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 34."}
尝试 2
public static T ConvertFromJSON<T>(string jsonNotation)
{
return JsonConvert.DeserializeObject<T>(jsonNotation, NoNullStrings);
}
这里是例外:
{"Error converting value \"{\"Name\":\"Hello\",\"State\":7}\" to type 'RestApi.Objects.rTestObject'. Path '', line 1, position 34."}
解决方案:
谢谢亚历山大一世!
public static T ConvertFromStringifiedJSON<T>(string stringifiedJSON)
{
var json = JsonConvert.DeserializeObject<string>(stringifiedJSON);
return ConvertFromJSON<T>(json);
}
如@ne1410 所写,使用:
JsonConvert.DeserializeObject<rTestObject>(myJsonString);
你不必把你Json字符串化,它已经是JsonConvert.SerializeObject(obj)
return类型所见的字符串
您不需要任何其他 IMO 方法。
请查看下一个示例:
class Program
{
static void Main(string[] args)
{
var test = new TestObject
{
Name = "Hello",
State = 7
};
var json = ConvertToJson(test);
var stringify = Stringify(json);
var result = StringifyToObject<TestObject>(stringify);
}
public static string ConvertToJson<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
public static string Stringify(string json)
{
return JsonConvert.ToString(json);
}
public static T StringifyToObject<T>(string stringify)
{
var json = JsonConvert.DeserializeObject<string>(stringify);
var result = JsonConvert.DeserializeObject<T>(json);
return result;
}
}
public class TestObject
{
public TestObject()
{
Name = "Hi";
State = 0;
}
public string Name { get; set; }
public int State { get; set; }
}
查看StringifyToObject
方法。
- 将字符串化字符串转换为 JSON 字符串
- 将JSON字符串反序列化为对象
这是我试图将其转换为 JSON 字符串并进行字符串化的非常简单的 C# class 对象:
public class rTestObject
{
public rTestObject()
{
Name = "Hello";
State = 7;
}
public string Name { get; set; }
public int State { get; set; }
}
我调用以下静态方法:
// Json.net
// from Newtonsoft.Json.dll
// version 8.0.2.19309
//
using Newtonsoft.Json;
public static string ConvertToJSON<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
产生以下(预期)输出:
{"Name":"Hello","State":7}
我调用以下静态方法来字符串化我的 JSON 字符串
public static string Stringify(string json)
{
return JsonConvert.ToString(json);
}
产生以下(我认为这是预期的??)输出:
"{\"Name\":\"Hello\",\"State\":7}"
我的问题如何获得:
"{\"Name\":\"Hello\",\"State\":7}"
回到 rTestObject?
这是我尝试过的:
尝试 1
public static T ConvertFromStringifiedJSON<T>(string stringifiedJSON)
{
Newtonsoft.Json.Linq.JObject j = Newtonsoft.Json.Linq.JObject.Parse(stringifiedJSON);
return ConvertFromJSON<T>(j.ToString());
}
这里是例外:
{"Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 34."}
尝试 2
public static T ConvertFromJSON<T>(string jsonNotation)
{
return JsonConvert.DeserializeObject<T>(jsonNotation, NoNullStrings);
}
这里是例外:
{"Error converting value \"{\"Name\":\"Hello\",\"State\":7}\" to type 'RestApi.Objects.rTestObject'. Path '', line 1, position 34."}
解决方案:
谢谢亚历山大一世!
public static T ConvertFromStringifiedJSON<T>(string stringifiedJSON)
{
var json = JsonConvert.DeserializeObject<string>(stringifiedJSON);
return ConvertFromJSON<T>(json);
}
如@ne1410 所写,使用:
JsonConvert.DeserializeObject<rTestObject>(myJsonString);
你不必把你Json字符串化,它已经是JsonConvert.SerializeObject(obj)
您不需要任何其他 IMO 方法。
请查看下一个示例:
class Program
{
static void Main(string[] args)
{
var test = new TestObject
{
Name = "Hello",
State = 7
};
var json = ConvertToJson(test);
var stringify = Stringify(json);
var result = StringifyToObject<TestObject>(stringify);
}
public static string ConvertToJson<T>(T obj)
{
return JsonConvert.SerializeObject(obj);
}
public static string Stringify(string json)
{
return JsonConvert.ToString(json);
}
public static T StringifyToObject<T>(string stringify)
{
var json = JsonConvert.DeserializeObject<string>(stringify);
var result = JsonConvert.DeserializeObject<T>(json);
return result;
}
}
public class TestObject
{
public TestObject()
{
Name = "Hi";
State = 0;
}
public string Name { get; set; }
public int State { get; set; }
}
查看StringifyToObject
方法。
- 将字符串化字符串转换为 JSON 字符串
- 将JSON字符串反序列化为对象