c# - 将文本/纯多行键=值 http 响应映射到 json 和/或 c# 对象
问题描述
我正在使用第 3 方 api 并在正文中获得具有以下格式的纯文本响应:
item[0].Name = name
item[0].Type = type
item[1].Name etc...
有没有一种简单的方法可以将其映射到 c# 中的对象或 JSON?
我尝试操作字符串以将“\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"
}
]
推荐阅读
- typescript - 如何键入 cast Svelte 3 反应式语法变量?
- python - 如何在 django admin 上编辑“现场查看”网址?
- javascript - 使用 react javascript 子组件访问功能的问题
- java - 光标异常:请求索引 0,大小为 0
- highlight - 如何使 WinDjView 中的高亮文本永久化?
- android - Android:GoogleMaps 标记详细信息片段
- css - Bootstrap 5 - justify-content - 整体背景
- mongodb - 一个文档中的MongoDB多个_id字段错误
- ssl - SSL torrent 通过磁力链接
- json - 在 PSQL 中从包含 JSONB 的表创建物化视图