【发布时间】:2017-07-21 21:30:22
【问题描述】:
我有以下内容
[
{
"name": "ATVI",
"dailyClosePrice": [
{
"3/15/2017": 210.08,
"4/6/2017": 235.08,
"4/21/2017": 243.61,
"2/16/2017": 205.43
}
]
},
{
"name": "ADBE",
"dailyClosePrice": [
{
"3/15/2017": 241.96,
"4/6/2017": 270.22,
"4/21/2017": 281.22,
"2/16/2017": 225.26
}
]
}
]
实际文件不止2个,但你可以看到有两个
这里的主要对象。
我在解析 "3/15/2017": 210.08 等键值对时遇到问题。
我需要为此创建一个类,我想一个示例类应该有
class Stock
{
public string Name{get;set;}
public List<Entry> Prices{get;set;}
}
class Entry
{
public string Date{get;set;}
public double Price{get;set;}
}
所以我试图将文件解析为 列表
我想我可以使用 StreamReader 并使用 Seek 方法来查找 一个“:”,但我遇到的问题是如何只能在“ATVI”中阅读。例如,一旦我得到“ATVI”,我将该字符串设置为股票中的名称,然后可以搜索“{”并读取“2017 年 3 月 15 日”并将其设置为条目中的日期,然后搜索“ :" 并读取双精度等。
如果我执行上述操作,我不知道如何在 C# 中读取流的选择元素。在 C# 中,我主要读入具有公共间距的字符串,通常我会使用 C 来处理更复杂的事情,例如这里,但我真的希望使用 c# 而不是 C。
我不关心我需要使用什么方法,我只是想在文件中读取。
如果我有类似下面的东西,我会使用 NewtonSoft
[
{
"name": "ATVI",
"dailyClosePrice": [
{"Date":"3/15/2017", "price":210.08},
{"Date":"3/15/2017", "price": 210.08},
{"Date":"4/6/2017", "price": 235.08},
{"Date":"4/21/2017", "price": 243.61}
]
},
{
"name": "ADBE",
"dailyClosePrice": [
{"Date":"3/15/2017", "price":210.08},
{"Date":"3/15/2017", "price": 210.08},
{"Date":"4/6/2017", "price": 235.08},
{"Date":"4/21/2017", "price": 243.61}
]
}
]
【问题讨论】:
-
您为什么要手动执行此操作,而不仅仅是使用专门为此目的设计的库,并且可能比您(或我)做得更好?
-
我在其他 JSON 文件中使用 NewtonSoft,但这个格式很奇怪
-
奇怪在哪里?
-
我只是小心翼翼地修复了所有的缩进,甚至把你的伪代码变成了真正的代码——你为什么又把它搞砸了? (如果要加点东西,加到fixed版本...)
-
(不过,请您以后自己格式化帖子。)