将 text/plain 多行 key=value http 响应映射到 json 和/或 c# 对象
Map text/plain multiline key=value http response to json and or c# object
我正在访问第 3 方 api 并在正文中收到格式如下的纯文本响应:
item[0].Name = name
item[0].Type = type
item[1].Name etc...
是否有一种简单的方法将其映射到一个对象或 JSON 在 c# 中?
我已经尝试处理字符串以将“\n”替换为“,”,将“=”替换为“:”并将其序列化为 JSON 对象,但没有成功。我也尝试过拆分字符串并以这种方式从中创建对象,但我需要从这个 api 中访问很多端点,结果各不相同,这不是一个非常干净的解决方案。
编辑
以字符串形式读取响应内容后,响应的确切格式为
item[0].Name=name\r\nitem[0].Type=type\r\nitem[1].Name=name\r\nitem[1].Type=type
非常感谢任何帮助!
试试这个,它在 Visual Studio
中测试过
static void Main()
{
var t = @"item[0].Name = name0
item[0].Type = type0
item[1].Name = name1
item[1].Type = type1";
var ta = t.Split("\r\n");
List<NameType> list = new List<NameType>();
for (var i = 0; i < ta.Length; i += 2)
{
var itemNameArr = ta[i].Split("=");
var itemTypeArr = ta[i + 1].Split("=");
if( itemNameArr[0].Substring(0,itemNameArr[0].IndexOf("."))
!= itemTypeArr[0].Substring(0,itemNameArr[0].IndexOf("."))) return //error ;
var itemName = itemNameArr[1].Replace("\r", string.Empty).Replace("\n", string.Empty);
var itemType= itemTypeArr[1].Replace("\r", string.Empty).Replace("\n", string.Empty);
list.Add(new NameType { Name = itemName, Type = itemType });
}
var json = JsonSerializer.Serialize(list);
}
public class NameType
{
public string Name { get; set; }
public string Type { get; set; }
}
json
[
{
"Name": " name0",
"Type": " type0"
},
{
"Name": " name1",
"Type": " type1"
}
]
我正在访问第 3 方 api 并在正文中收到格式如下的纯文本响应:
item[0].Name = name
item[0].Type = type
item[1].Name etc...
是否有一种简单的方法将其映射到一个对象或 JSON 在 c# 中?
我已经尝试处理字符串以将“\n”替换为“,”,将“=”替换为“:”并将其序列化为 JSON 对象,但没有成功。我也尝试过拆分字符串并以这种方式从中创建对象,但我需要从这个 api 中访问很多端点,结果各不相同,这不是一个非常干净的解决方案。
编辑
以字符串形式读取响应内容后,响应的确切格式为
item[0].Name=name\r\nitem[0].Type=type\r\nitem[1].Name=name\r\nitem[1].Type=type
非常感谢任何帮助!
试试这个,它在 Visual Studio
中测试过static void Main()
{
var t = @"item[0].Name = name0
item[0].Type = type0
item[1].Name = name1
item[1].Type = type1";
var ta = t.Split("\r\n");
List<NameType> list = new List<NameType>();
for (var i = 0; i < ta.Length; i += 2)
{
var itemNameArr = ta[i].Split("=");
var itemTypeArr = ta[i + 1].Split("=");
if( itemNameArr[0].Substring(0,itemNameArr[0].IndexOf("."))
!= itemTypeArr[0].Substring(0,itemNameArr[0].IndexOf("."))) return //error ;
var itemName = itemNameArr[1].Replace("\r", string.Empty).Replace("\n", string.Empty);
var itemType= itemTypeArr[1].Replace("\r", string.Empty).Replace("\n", string.Empty);
list.Add(new NameType { Name = itemName, Type = itemType });
}
var json = JsonSerializer.Serialize(list);
}
public class NameType
{
public string Name { get; set; }
public string Type { get; set; }
}
json
[
{
"Name": " name0",
"Type": " type0"
},
{
"Name": " name1",
"Type": " type1"
}
]