我有一个包含多个json对象的文件。如何在.net
中阅读我需要以下字符串作为两个json obejcts
" {你好:'那里'} {再见:'你',谢谢:'你'}"
答案 0 :(得分:1)
@Anu:首先,我不认为你指定的字符串" {你好:'那里'} {再见:'你',谢谢:&# 39,你'}"是正确的Json字符串。
应该像这样正确地反序列化 的 {"到达" {"你好":"还有"}"离开" {"再见&#34 ;:"你""感谢":"你"}} 即可。
请看下面的示例,了解正确的结构:
//您需要安装Json.Net并使用它,如下所示:
using Newtonsoft.Json;
//序列化和反序列化的对象:
public class Greeting
{
public Arrival Arrival { get; set; }
public Departure Departure { get; set; }
}
public class Arrival
{
public string Hello { get; set; }
}
public class Departure
{
public string GoodBye { get; set; }
public string Thanks { get; set; }
}
//填充获取对象C#方式
var greeting = new Greeting
{
Arrival = new Arrival { Hello = "there" },
Departure = new Departure { GoodBye = "you", Thanks = "you" }
};
//将C#对象序列化为Json
var jsonString = JsonConvert.SerializeObject(new
{
Arrival = new
{
greeting.Arrival.Hello
},
Departure = new { greeting.Departure.GoodBye, greeting.Departure.Thanks }
});
//哪个产生这个Json字符串: {" Arrival":{" Hello":"有"},"出发&# 34;:{"再见":"你""感谢":"你"}} 强>
//将Json字符串转换回C#对象 - 反序列化对象
var greeting1 = (Greeting)JsonConvert.DeserializeObject(jsonString, typeof(Greeting));
希望这有助于回答你的问题。
祝你好运!答案 1 :(得分:1)
Dibu 是正确的 - 您的字符串不是有效的JSON对象,因此您无法自动将其反序列化回对象。
您应该编写自己的解析器(oops,不要这样做)或强制更改源输入文件以具有以下之一:
最好的选择是更改源文件以包含一个有效对象,但我想这不是您对此类源文件格式的决定...
答案 2 :(得分:0)
有一种方法。反序列化时需要传递JsonConverter。
string json = @"{hello:'there'} {goodbye:'you',Thanks:'you'}";
IList<Greeting> greetings= new List<Greeting>();
JsonTextReader reader = new JsonTextReader(new StringReader(json));
// this is the important part, which makes the reader not throw exception
//when one json object is finished
reader.SupportMultipleContent = true;
while (true)
{
if (!reader.Read())
{
break;
}
JsonSerializer serializer = new JsonSerializer();
Greeting greeting= serializer.Deserialize<Greeting>(reader);
greetings.Add(greeting);
}