Bloom.Edit.Configurator.CollectJsonData C# (CSharp) Method

CollectJsonData() public method

Saves off the library part to disk, stores the rest
public CollectJsonData ( string newDataString ) : void
newDataString string
return void
        public void CollectJsonData(string newDataString)
        {
            if (string.IsNullOrEmpty(newDataString))
            {
                LocalData = "";
                return;
            }
            dynamic newData = DynamicJson.Parse(newDataString);
            dynamic libraryData=null;
            if(newData.IsDefined("library"))
            {
                libraryData = newData.library; //a couple RuntimeBinderException errors are normal here, just keep going, it eventually gets past it.
            }
            //Now in LocalData, we want to save everything that isn't library data
            newData.Delete("library");
            LocalData = newData.ToString();
            if (libraryData == null)
                return;	//no library data in there, so we don't have anything to merge/save

            var existingDataString = GetLibraryData();
            if (!string.IsNullOrEmpty(existingDataString))
            {
                DynamicJson existingData = DynamicJson.Parse(existingDataString);
                if (existingData.GetDynamicMemberNames().Contains("library"))
                    libraryData = MergeJsonData(DynamicJson.Parse(existingDataString).library.ToString(), libraryData.ToString());
            }

            RobustFile.WriteAllText(PathToLibraryJson, libraryData.ToString());
        }

Usage Example

        public void CollectJsonData_HasArrayValue_DataMerged()
        {
            var firstData = "{\"library\":{\"days\":[\"1\",\"2\"]}}";
            var secondData = "{\"library\":{\"days\":[\"one\",\"two\"]}}";

            var first = new Configurator(_libraryFolder.Path);
            first.CollectJsonData(firstData.ToString());
            first.CollectJsonData(secondData.ToString());

            var second = new Configurator(_libraryFolder.Path);
            dynamic j = (DynamicJson)DynamicJson.Parse(second.GetLibraryData());
            Assert.AreEqual("one", j.library.days[0]);
            Assert.AreEqual("two", j.library.days[1]);
        }
All Usage Examples Of Bloom.Edit.Configurator::CollectJsonData