public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { JArray array = new JArray(); IList list = (IList)value; if (list.Count > 0) { JArray keys = new JArray(); JObject first = JObject.FromObject(list[0], serializer); foreach (JProperty prop in first.Properties()) { keys.Add(new JValue(prop.Name)); } array.Add(keys); foreach (object item in list) { JObject obj = JObject.FromObject(item, serializer); JArray itemValues = new JArray(); foreach (JProperty prop in obj.Properties()) { itemValues.Add(prop.Value); } array.Add(itemValues); } } array.WriteTo(writer); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { ConverterPrecedenceClass c = (ConverterPrecedenceClass)value; JToken j = new JArray(ConverterType, c.TestValue); j.WriteTo(writer); }
static int WriteTo(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); Newtonsoft.Json.Linq.JArray obj = (Newtonsoft.Json.Linq.JArray)ToLua.CheckObject(L, 1, typeof(Newtonsoft.Json.Linq.JArray)); Newtonsoft.Json.JsonWriter arg0 = (Newtonsoft.Json.JsonWriter)ToLua.CheckObject(L, 2, typeof(Newtonsoft.Json.JsonWriter)); Newtonsoft.Json.JsonConverter[] arg1 = ToLua.CheckParamsObject <Newtonsoft.Json.JsonConverter>(L, 3, count - 2); obj.WriteTo(arg0, arg1); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
static int WriteTo(IntPtr L) { try { ToLua.CheckArgsCount(L, 3); Newtonsoft.Json.Linq.JArray obj = (Newtonsoft.Json.Linq.JArray)ToLua.CheckObject <Newtonsoft.Json.Linq.JArray>(L, 1); Newtonsoft.Json.JsonWriter arg0 = (Newtonsoft.Json.JsonWriter)ToLua.CheckObject <Newtonsoft.Json.JsonWriter>(L, 2); Newtonsoft.Json.JsonConverter[] arg1 = ToLua.CheckObjectArray <Newtonsoft.Json.JsonConverter>(L, 3); obj.WriteTo(arg0, arg1); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
private bool TryReplicatingData(string destination, JArray jsonDocuments) { try { var request = (HttpWebRequest)WebRequest.Create(destination + "/replication/replicate?from=" + docDb.Configuration.ServerUrl); request.UseDefaultCredentials = true; request.Credentials = CredentialCache.DefaultNetworkCredentials; request.Method = "POST"; using (var stream = request.GetRequestStream()) using (var streamWriter = new StreamWriter(stream)) { jsonDocuments.WriteTo(new JsonTextWriter(streamWriter)); streamWriter.Flush(); stream.Flush(); } using (request.GetResponse()) { log.InfoFormat("Replicated {0} to {1}", jsonDocuments.Count, destination); } return true; } catch (WebException e) { var response = e.Response as HttpWebResponse; if (response != null) { using (var streamReader = new StreamReader(response.GetResponseStream())) { var error = streamReader.ReadToEnd(); log.Warn("Replication to " + destination + " had failed\r\n" + error, e); } } else { log.Warn("Replication to " + destination + " had failed", e); } return false; } catch (Exception e) { log.Warn("Replication to " + destination + " had failed", e); return false; } }
private static void FlushBatch(string instanceUrl, List<JObject> batch) { var sw = Stopwatch.StartNew(); long size; using (var webClient = new WebClient()) { webClient.Headers.Add("Content-Type", "application/json; charset=utf-8"); webClient.UseDefaultCredentials = true; webClient.Credentials = CredentialCache.DefaultNetworkCredentials; using (var stream = new MemoryStream()) { using (var streamWriter = new StreamWriter(stream, Encoding.UTF8)) using (var jsonTextWriter = new JsonTextWriter(streamWriter)) { var commands = new JArray(); foreach (var doc in batch) { var metadata = doc.Value<JObject>("@metadata"); doc.Remove("@metadata"); commands.Add(new JObject( new JProperty("Method", "PUT"), new JProperty("Document", doc), new JProperty("Metadata", metadata), new JProperty("Key", metadata.Value<string>("@id")) )); } commands.WriteTo(jsonTextWriter); jsonTextWriter.Flush(); streamWriter.Flush(); stream.Flush(); size = stream.Length; using (var netStream = webClient.OpenWrite(instanceUrl + "bulk_docs", "POST")) { stream.WriteTo(netStream); netStream.Flush(); } } } } Console.WriteLine("Wrote {0} documents [{1:#,#} kb] in {2:#,#} ms", batch.Count, Math.Round((double)size/1024, 2), sw.ElapsedMilliseconds); batch.Clear(); }
private bool TryReplicationDocuments(string destination, JArray jsonDocuments) { try { log.DebugFormat("Starting to replicate {0} documents to {1}", jsonDocuments.Count, destination); var request = (HttpWebRequest)WebRequest.Create(destination + "/replication/replicateDocs?from=" + UrlEncodedServerUrl()); request.UseDefaultCredentials = true; request.ContentType = "application/json; charset=utf-8"; request.Credentials = CredentialCache.DefaultNetworkCredentials; request.Method = "POST"; using (var stream = request.GetRequestStream()) using (var streamWriter = new StreamWriter(stream, Encoding.UTF8)) { jsonDocuments.WriteTo(new JsonTextWriter(streamWriter)); streamWriter.Flush(); stream.Flush(); } using (request.GetResponse()) { log.InfoFormat("Replicated {0} documents to {1}", jsonDocuments.Count, destination); } return true; } catch (WebException e) { var response = e.Response as HttpWebResponse; if (response != null) { using (var streamReader = new StreamReader(response.GetResponseStream())) { var error = streamReader.ReadToEnd(); log.Warn("Replication to " + destination + " had failed\r\n" + error, e); } } else { log.Warn("Replication to " + destination + " had failed", e); } return false; } catch (Exception e) { log.Warn("Replication to " + destination + " had failed", e); return false; } }
private static void FlushBatch(string instanceUrl, List<JObject> batch) { using (var webClient = new WebClient()) { webClient.UseDefaultCredentials = true; webClient.Credentials = CredentialCache.DefaultNetworkCredentials; using (var stream = webClient.OpenWrite(instanceUrl + "bulk_docs", "POST")) using (var streamWriter = new StreamWriter(stream)) using (var jsonTextWriter = new JsonTextWriter(streamWriter)) { var commands = new JArray(); foreach (var doc in batch) { var metadata = doc.Value<JObject>("@metadata"); doc.Remove("@metadata"); commands.Add(new JObject( new JProperty("Method", "PUT"), new JProperty("Document", doc), new JProperty("Metadata", metadata), new JProperty("Key", metadata.Value<string>("@id")) )); } commands.WriteTo(jsonTextWriter); jsonTextWriter.Flush(); streamWriter.Flush(); } } batch.Clear(); }
private static void WriteCommands(IEnumerable<Command> cmds, Stream log) { var array = new JArray(); foreach (var command in cmds) { var cmd = new JObject { {"type", (byte) command.Type}, {"key", command.Key}, {"dicId", command.DictionaryId} }; if (command.Type == CommandType.Put) { cmd.Add("position", command.Position); cmd.Add("size", command.Size); } array.Add(cmd); } array.WriteTo(new BsonWriter(log)); }