public bool FromJsonMarket(JObject jo)
        {
            try
            {
                id      = jo["id"].Int();
                fdname  = JournalFieldNaming.FixCommodityName(jo["Name"].Str());
                locName = jo["Name_Localised"].Str();
                if (locName.IsEmpty())
                {
                    locName = fdname.SplitCapsWordFull();
                }

                loccategory = jo["Category_Localised"].Str();
                category    = jo["Category"].Str();

                legality = "";  // not in market data

                buyPrice      = jo["BuyPrice"].Int();
                sellPrice     = jo["SellPrice"].Int();
                meanPrice     = jo["MeanPrice"].Int();
                demandBracket = jo["DemandBracket"].Int();
                stockBracket  = jo["StockBracket"].Int();
                stock         = jo["Stock"].Int();
                demand        = jo["Demand"].Int();

                List <string> StatusFlags = new List <string>();

                if (jo["Consumer"].Bool())
                {
                    StatusFlags.Add("Consumer");
                }

                if (jo["Producer"].Bool())
                {
                    StatusFlags.Add("Producer");
                }

                if (jo["Rare"].Bool())
                {
                    StatusFlags.Add("Rare");
                }

                this.statusFlags = StatusFlags;
                //System.Diagnostics.Debug.WriteLine("Market field fd:'{0}' loc:'{1}' of type '{2}' '{3}'", fdname, locName, category, loccategory);

                ComparisionLR = ComparisionRL = "";
                return(true);
            }
            catch
            {
                return(false);
            }
        }