C# 将 JSON 转换为 JArray 以上传到 Algolia
C# convert JSON to a JArray for an upload to Algolia
使用 Algolia 在线云搜索引擎,他们的示例工作正常。
// Load JSON file ( from file system )
StreamReader re = File.OpenText("contacts.json");
JsonTextReader reader = new JsonTextReader(re);
JArray batch = JArray.Load(reader);
// Add objects
Index index = client.InitIndex("contacts");
index.AddObjects(batch);
所以我想做的是采用 C# class 我序列化为 JSON 的属性,并能够以某种方式将其用作 JArray 来加载和添加以发送到 Algolia。
// works fine
var json = new JavaScriptSerializer().Serialize(boom);
JArray batch = JArray.Parse(json); // breaks
Index index = client.InitIndex("myindex");
index.AddObjects(batch);
这打破了
JArray batch = JArray.Parse(json);
它很可能会失败,因为 boom
不是一个数组。你可以做的是将 boom
放在一个匿名数组中,然后序列化它:
var json = new JavaScriptSerializer().Serialize(new[] { boom });
var batch = JArray.Parse(json);
更好的是,您可以跳过序列化并立即从您的对象创建 JArray
:
var batch = JArray.FromObject(new[] { boom });
使用 Algolia 在线云搜索引擎,他们的示例工作正常。
// Load JSON file ( from file system )
StreamReader re = File.OpenText("contacts.json");
JsonTextReader reader = new JsonTextReader(re);
JArray batch = JArray.Load(reader);
// Add objects
Index index = client.InitIndex("contacts");
index.AddObjects(batch);
所以我想做的是采用 C# class 我序列化为 JSON 的属性,并能够以某种方式将其用作 JArray 来加载和添加以发送到 Algolia。
// works fine
var json = new JavaScriptSerializer().Serialize(boom);
JArray batch = JArray.Parse(json); // breaks
Index index = client.InitIndex("myindex");
index.AddObjects(batch);
这打破了
JArray batch = JArray.Parse(json);
它很可能会失败,因为 boom
不是一个数组。你可以做的是将 boom
放在一个匿名数组中,然后序列化它:
var json = new JavaScriptSerializer().Serialize(new[] { boom });
var batch = JArray.Parse(json);
更好的是,您可以跳过序列化并立即从您的对象创建 JArray
:
var batch = JArray.FromObject(new[] { boom });