该对象有139个字段;字符串初始值设定项可能具有部分或全部这些字段。它的格式如下:“ FirstName”:“ Bart”,“ LastName”:“ Simpson”,“ Company”:“ Fat Tony's”,“ Address”:“ 55 Maple Drive”等。我只需要查找以下字段即可这个:
if (initializerString.contains("FirstName:")
FirstName="get the next series of chars until the ", or end of string
等等。但是,有没有更紧凑的方法可以做到这一点?
看起来您的格式与JSON非常相似(实际上,除了没有花括号外),因为人们评论说,使用JSON.NET会更好。
如果您完全控制此字符串,只需将其转换为json并反序列化即可:
JsonConvert.DeserializeObject<YourClass>(yourString);
在反序列化数据时,它将自动设置正确的属性。
如果您无法控制这种格式,并且无论如何都需要解析它,只需放上花括号即可:
JsonConvert.DeserializeObject<YourClass>("{" + yourString + "}");
如果你没有为这个特定的类,你也可以更换YourClass
为Dictionary<string,object>
您会发现该库为Newtonsoft.Json
,并且我相信它是处理JSON数据最流行的库。
我已经制作了一个有效的示例,因此您可以在操作中看到它(请注意,我保留了您的字符串格式,但是请尝试使用直接的json):
using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;
public class Program
{
public class Information
{
public string FirstName{get;set;}
public string LastName{get;set;}
public string Company{get;set;}
public string Address{get;set;}
}
public static void Main()
{
string myObject = "\"FirstName\":\"Bart\",\"LastName\":\"Simpson\",\"Company\":\"Fat Tony's\",\"Address\":\"55 Maple Drive\"";
var converted = JsonConvert.DeserializeObject<Dictionary<string, object>>("{"+myObject+"}");
var converted2 = JsonConvert.DeserializeObject<Information>("{"+myObject+"}");
Console.WriteLine(String.Join("\n", converted.Select(c=> c.Key + ": " + c.Value)));
Console.WriteLine(converted2.FirstName);
}
}
这是一个奖金小提琴:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句