我讀了幾個類似的問題,但沒有找到任何與JObject相關的問題。這裏的問題:我有級聯的JSON對象流,即:從流加載多個連接的JSON對象
{"key1":"value1"}{"key2":"value2"}{"key3":"value3"}
現在,我想讀這些對象逐個放入JObject。以下是我試圖做到這一點:
public class JsonStreamReader : JsonTextReader
{
public JsonStreamReader(Stream s) : base(new StreamReader(s)) {}
}
private void LoadJson(Stream s)
{
var r = new JsonStreamReader(s) { SupportMultipleContent = true };
var obj = JObject.Load(r);
// ... get data from JObject ...
}
的這裏的問題是,JObject.Load()讀取流中的所有可用數據,但只分析第一個對象,並放棄所有的休息。 我該如何處理?
而且只是出現XY問題(爲什麼我需要這樣做): 我想通過TCP流傳輸JSON消息。因爲我使用原始的TCP流,我需要知道消息的大小來讀取它。我決定在每條消息前寫入size
和message type
的小標題,這樣我就可以將標題讀入一個小緩衝區,獲得以下消息的大小,然後完全讀取它。
有沒有什麼辦法可以將JSON對象封裝到數組中並用逗號分隔它們? – krillgar
@krillgar所以這將是一個單一的對象? – nitrocaster
是那裏的字面json嗎?大多數API以這樣的數據格式傳遞json對象的新行分隔符,所以處理它的正確方法是逐行讀取它,將每個對象傳入JObject.Load(可能需要一種不同的方法),而不是嘗試完成所有操作立刻。 – evanmcdonnal