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 });