mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	JsonMap
This commit is contained in:
		@@ -93,11 +93,6 @@ public static class FreeSqlJsonMapCoreExtensions
 | 
			
		||||
            case DataType.OdbcOracle:
 | 
			
		||||
            case DataType.CustomOracle:
 | 
			
		||||
            case DataType.Dameng:
 | 
			
		||||
            case DataType.PostgreSQL:
 | 
			
		||||
            case DataType.OdbcPostgreSQL:
 | 
			
		||||
            case DataType.CustomPostgreSQL:
 | 
			
		||||
            case DataType.KingbaseES:
 | 
			
		||||
            case DataType.ShenTong:
 | 
			
		||||
                fsql.Aop.ParseExpression += (_, e) =>
 | 
			
		||||
                {
 | 
			
		||||
                    //if (e.Expression is MethodCallExpression callExp)
 | 
			
		||||
@@ -170,13 +165,7 @@ public static class FreeSqlJsonMapCoreExtensions
 | 
			
		||||
                                            StyleJsonValue();
 | 
			
		||||
                                            return;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    while (parentMemExps.Any())
 | 
			
		||||
                                    {
 | 
			
		||||
                                        memExp = parentMemExps.Pop();
 | 
			
		||||
                                        var opt = parentMemExps.Any() ? "->" : $"->>{(memExp.Type.IsArrayOrList() ? "/*json array*/" : "")}";
 | 
			
		||||
                                        result = $"{result}{opt}'{memExp.Member.Name}'";
 | 
			
		||||
                                    }
 | 
			
		||||
                                    e.Result = result;
 | 
			
		||||
                                    StylePgJson();
 | 
			
		||||
                                    return;
 | 
			
		||||
 | 
			
		||||
                                    void StyleJsonExtract()
 | 
			
		||||
@@ -197,6 +186,16 @@ public static class FreeSqlJsonMapCoreExtensions
 | 
			
		||||
                                        }
 | 
			
		||||
                                        e.Result = $"json_value({result},'${jsonPath}')";
 | 
			
		||||
                                    }
 | 
			
		||||
                                    void StylePgJson()
 | 
			
		||||
                                    {
 | 
			
		||||
                                        while (parentMemExps.Any())
 | 
			
		||||
                                        {
 | 
			
		||||
                                            memExp = parentMemExps.Pop();
 | 
			
		||||
                                            var opt = parentMemExps.Any() ? "->" : $"->>{(memExp.Type.IsArrayOrList() ? "/*json array*/" : "")}";
 | 
			
		||||
                                            result = $"{result}{opt}'{memExp.Member.Name}'";
 | 
			
		||||
                                        }
 | 
			
		||||
                                        e.Result = result;
 | 
			
		||||
                                    }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user