我有一个列表,其中包含3年的日历数据,我将它们放在Excel中,所以我使用oledb读取数据并将它们存储在列表中。您可以在下面找到列表
IList<BulkDateInsert> objExcelCon = ReadExcel(Filepath);
我在上面的列表中得到了什么
{
"CalendarDate": "\/Date(1490985000000)\/",
"Calendarday": "Sat",
"isweekday": false,
"isweekend": true
},
{
"CalendarDate": "\/Date(1491071400000)\/",
"Calendarday": "Sun",
"isweekday": false,
"isweekend": true
},
{
"CalendarDate": "\/Date(1491157800000)\/",
"Calendarday": "Mon",
"isweekday": true,
"isweekend": false
},
{
"CalendarDate": "\/Date(1491244200000)\/",
"Calendarday": "Tue",
"isweekday": true,
"isweekend": false
},
{
"CalendarDate": "\/Date(1491330600000)\/",
"Calendarday": "Wed",
"isweekday": true,
"isweekend": false
}, ..... N (upto year 2021)
我正在使用documentdb,所以我想将上面的列表作为单个文档,而不是每天单独的文档。
当我尝试使用createdocumentasync()时出现此错误
对象序列化为String。期望JObject实例。
IList<BulkDateInsert> objExcelCon = ReadExcel(Filepath);
JavaScriptSerializer js = new JavaScriptSerializer();
var json = js.Serialize(objExcelCon);
var ParsedJson = json.Replace("[", string.Empty).Replace("]", string.Empty);
await client.CreateDocumentAsync(collection.SelfLink, ParsedJson);
需要将它们作为单个文档插入,以便以后查询更容易。
答案 0 :(得分:0)
当我尝试使用createdocumentasync()时出现此错误 对象序列化为String。期望JObject实例。
请不要序列化列表对象并将其作为文档传递给CreateDocumentAsync method以创建用于存储3年日历数据的文档。如果可能,正如David Makogon所说,请为每个日历条目创建文档。此外,您还可以将日历条目分组,并为分组日历条目创建单独的文档。以下简单示例供您参考。
class Program
{
string EndpointUri = "{endpoint URL}";
string PrimaryKey = "{primary key}";
DocumentClient client;
static void Main(string[] args)
{
BulkDateInsert item = new BulkDateInsert() { CalendarDate = @"\/Date(1490985000000)\/", Calendarday = "Sat", isweekday = false, isweekend = true };
BulkDateInsert item1 = new BulkDateInsert() { CalendarDate = @"\/Date(1491071400000)\/", Calendarday = "Sun", isweekday = false, isweekend = true };
List<BulkDateInsert> list = new List<BulkDateInsert>();
list.Add(item);
list.Add(item1);
IList<BulkDateInsert> objExcelCon= list;
GroupedData gdata = new GroupedData() { Calendardata = objExcelCon };
Program p = new Program();
p.CreateDocumentForCalendarData(gdata).Wait();
}
private async Task CreateDocumentForCalendarData(GroupedData ParsedJson)
{
this.client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);
await client.CreateDocumentAsync("dbs/{dbname}/colls/{collectionname}", ParsedJson);
}
public class GroupedData {
//could be weekly, monthly data
public IList<BulkDateInsert> Calendardata { get; set; }
}
public class BulkDateInsert
{
public string CalendarDate { get; set; }
public string Calendarday { get; set; }
public bool isweekday { get; set; }
public bool isweekend { get; set; }
}
}