实例介绍
JMESPath.Net 是一个为 .Net Core 设计的完全兼容 JMESPath 规范的实现。
开始使用
使用解析器
JMESPath.Net 利用 Newtonsoft.Json 处理 JSON,并提供了一个简单易用的解析器:
using DevLab.JmesPath; const string input = @"{ \"foo\": \"bar\" }"; const string expression = "foo"; var jmes = new JmesPath(); var result = jmes.Transform(input, expression);在上面的示例中,结果是一个 JSON 字符串令牌,包括引号。
利用 AST
前面的示例返回了单个函数调用中 JMESPath 评估的结果。然而,JMESPath.Net 解析器创建了一个以 JmesPathExpression 对象为根的抽象语法树,用于对 JSON 文档评估 JMESPath 表达式。如果你想在执行评估之前检索 AST,请使用以下代码:
var jp = new JmesPath(); var ast = jp.Parse(expression);这里展示了 JmesPathExpression 对象的继承层次结构以及简单表达式和复合表达式的处理方式。通过这些示例,您可以深入了解如何在 .Net Core 应用程序中有效地利用 JMESPath.Net 来查询和处理 JSON 数据。
【实例截图】
【核心代码】
文件清单
└── JmesPath.Net-e59be9c0c0dfeea84f1bb65ddc1f776f063056c5
├── appveyor.yml
├── assets
│ ├── BaseGrammar2.PNG
│ ├── BaseGrammarMod.PNG
│ ├── BaseGrammar.PNG
│ ├── CaseElementList.PNG
│ ├── CaseLookaheadScan2.PNG
│ ├── look-ahead-1.md
│ ├── look-ahead-2.md
│ ├── SaveState2.PNG
│ ├── SaveState.PNG
│ ├── ScannerInfrastructure2.PNG
│ └── ScannerProlog.PNG
├── bin
│ ├── EncryptDecryptFile.PS1
│ ├── gplex.pdf
│ ├── gppg.pdf
│ └── Update-Version.ps1
├── _config.yml
├── global.json
├── jmespath.net.sln
├── LICENSE
├── README.md
├── src
│ ├── jmespath.net
│ │ ├── Expressions
│ │ │ ├── JmesParenExpression.cs
│ │ │ ├── JmesPathAdditionExpression.cs
│ │ │ ├── JmesPathAndExpression.cs
│ │ │ ├── JmesPathArgument.cs
│ │ │ ├── JmesPathArithmeticExpression.cs
│ │ │ ├── JmesPathBinding.cs
│ │ │ ├── JmesPathComparison.cs
│ │ │ ├── JmesPathCompoundExpression.cs
│ │ │ ├── JmesPathCurrentNodeExpression.cs
│ │ │ ├── JmesPathDivisionExpression.cs
│ │ │ ├── JmesPathEqualOperator.cs
│ │ │ ├── JmesPathExpression.cs
│ │ │ ├── JmesPathFilterProjection.cs
│ │ │ ├── JmesPathFlattenProjection.cs
│ │ │ ├── JmesPathFunctionExpression.cs
│ │ │ ├── JmesPathGreaterThanOperator.cs
│ │ │ ├── JmesPathGreaterThanOrEqualOperator.cs
│ │ │ ├── JmesPathHashWildcardProjection.cs
│ │ │ ├── JmesPathIdentifier.cs
│ │ │ ├── JmesPathIndex.cs
│ │ │ ├── JmesPathIndexExpression.cs
│ │ │ ├── JmesPathIntegerDivisionExpression.cs
│ │ │ ├── JmesPathLessThanOperator.cs
│ │ │ ├── JmesPathLessThanOrEqualOperator.cs
│ │ │ ├── JmesPathLetExpression.cs
│ │ │ ├── JmesPathListWildcardProjection.cs
│ │ │ ├── JmesPathLiteral.cs
│ │ │ ├── JmesPathModuloExpression.cs
│ │ │ ├── JmesPathMultiplicationExpression.cs
│ │ │ ├── JmesPathMultiSelectHash.cs
│ │ │ ├── JmesPathMultiSelectList.cs
│ │ │ ├── JmesPathNotEqualOperator.cs
│ │ │ ├── JmesPathNotExpression.cs
│ │ │ ├── JmesPathOrderingComparison.cs
│ │ │ ├── JmesPathOrExpression.cs
│ │ │ ├── JmesPathPipeExpression.cs
│ │ │ ├── JmesPathProjection.cs
│ │ │ ├── JmesPathRawString.cs
│ │ │ ├── JmesPathRootExpression.cs
│ │ │ ├── JmesPathRootNodeExpression.cs
│ │ │ ├── JmesPathSimpleExpression.cs
│ │ │ ├── JmesPathSliceProjection.cs
│ │ │ ├── JmesPathSubExpression.cs
│ │ │ ├── JmesPathSubtractionExpression.cs
│ │ │ └── JmesPathVariableReference.cs
│ │ ├── Functions
│ │ │ ├── AbsFunction.cs
│ │ │ ├── AvgFunction.cs
│ │ │ ├── ByFunction.cs
│ │ │ ├── CeilFunction.cs
│ │ │ ├── ContainsFunction.cs
│ │ │ ├── EndsWithFunction.cs
│ │ │ ├── FindFirstFunction.cs
│ │ │ ├── FindLastFunction.cs
│ │ │ ├── FloorFunction.cs
│ │ │ ├── FromItemsFunction.cs
│ │ │ ├── GroupByFunction.cs
│ │ │ ├── Impl
│ │ │ │ └── StringExtensions.cs
│ │ │ ├── ItemsFunction.cs
│ │ │ ├── JmesPathFunctionArgument.cs
│ │ │ ├── JmesPathFunction.cs
│ │ │ ├── JmesPathFunctionFactory.cs
│ │ │ ├── JoinFunction.cs
│ │ │ ├── KeysFunction.cs
│ │ │ ├── LengthFunction.cs
│ │ │ ├── LowerFunction.cs
│ │ │ ├── MapFunction.cs
│ │ │ ├── MathArrayFunction.cs
│ │ │ ├── MaxByFunction.cs
│ │ │ ├── MaxFunction.cs
│ │ │ ├── MergeFunction.cs
│ │ │ ├── MinByFunction.cs
│ │ │ ├── MinFunction.cs
│ │ │ ├── MinOrMaxFunction.cs
│ │ │ ├── NotNullFunction.cs
│ │ │ ├── PadLeftFunction.cs
│ │ │ ├── PadRightFunction.cs
│ │ │ ├── ReplaceFunction.cs
│ │ │ ├── ReverseFunction.cs
│ │ │ ├── SortByFunction.cs
│ │ │ ├── SortFunction.cs
│ │ │ ├── SplitFunction.cs
│ │ │ ├── StartsEndsWithFunction.cs
│ │ │ ├── StartsWithFunction.cs
│ │ │ ├── SumFunction.cs
│ │ │ ├── ToArrayFunction.cs
│ │ │ ├── ToNumberFunction.cs
│ │ │ ├── ToStringFunction.cs
│ │ │ ├── TrimFunction.cs
│ │ │ ├── TypeFunction.cs
│ │ │ ├── UpperFunction.cs
│ │ │ ├── ValuesFunction.cs
│ │ │ └── ZipFunction.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── Interop
│ │ │ ├── IFunctionRepository.cs
│ │ │ ├── IRegisterFunctions.cs
│ │ │ ├── IScopeParticipant.cs
│ │ │ └── IVisitor.cs
│ │ ├── JmesPath.cs
│ │ ├── JmesPathGenerator.cs
│ │ ├── jmespath.net.csproj
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── ScopeParticipant.cs
│ │ └── Utils
│ │ ├── CodePointEnumerator.cs
│ │ ├── JArrayExtensions.cs
│ │ ├── JTokenExtensions.cs
│ │ ├── JTokens.cs
│ │ ├── TextComparer.cs
│ │ ├── Text.cs
│ │ └── TextEnumerator.cs
│ ├── jmespath.net.interop
│ │ ├── IJmesPathGenerator.cs
│ │ └── jmespath.net.interop.csproj
│ ├── jmespath.net.parser
│ │ ├── IJmesPathGenerator.cs
│ │ ├── InternalsVisibleTo.cs
│ │ ├── jmespath.net.parser.csproj
│ │ ├── JmesPath.Net.Parser.nuspec
│ │ ├── JmesPathParser.cs
│ │ ├── JmesPathParser.y
│ │ ├── JmesPathScanner.cs
│ │ ├── JmesPathScannerExtensions.cs
│ │ ├── JmesPathScanner.lex
│ │ ├── JsonChecker.cs
│ │ ├── Parser.cs
│ │ ├── Token.cs
│ │ ├── Tokens
│ │ │ ├── LiteralStringToken.cs
│ │ │ ├── NumberToken.cs
│ │ │ ├── QuotedStringToken.cs
│ │ │ └── RawStringToken.cs
│ │ └── Utils
│ │ ├── StringUtil.cs
│ │ └── TypeInfoExtensions.cs
│ ├── jmespath.net.snk
│ └── jmespath.net.snk.crypted
├── tests
│ └── jmespathnet.tests
│ ├── Async
│ │ ├── ArithmeticExpressionsAsyncBehaviorTests.cs
│ │ ├── ComparisonAsyncBehaviorTests.cs
│ │ ├── JmesPathExpressionAsyncBehaviorTests.cs
│ │ ├── ListAsyncBehaviorTests.cs
│ │ ├── LogicalOperatorsAsyncBehaviorTests.cs
│ │ └── SampleFunctions
│ │ └── AsyncAvgFunction.cs
│ ├── Expressions
│ │ ├── JmesPathAndExpressionTest.cs
│ │ ├── JmesPathArithmeticExpressionTest.cs
│ │ ├── JmesPathCurrentNodeExpressionTest.cs
│ │ ├── JmesPathEqualOperatorTest.cs
│ │ ├── JmesPathExpressionsTestBase.cs
│ │ ├── JmesPathFlattenProjectionTest.cs
│ │ ├── JmesPathGreaterThanOperatorTest.cs
│ │ ├── JmesPathIdentifierTest.cs
│ │ ├── JmesPathIndexExpressionTest.cs
│ │ ├── JmesPathLiteralTest.cs
│ │ ├── JmesPathMultiSelectHashTest.cs
│ │ ├── JmesPathMultiSelectListTest.cs
│ │ ├── JmesPathNotExpressionTest.cs
│ │ ├── JmesPathOrExpressionTest.cs
│ │ ├── JmesPathPipeExpressionTest.cs
│ │ ├── JmesPathProjectionTest.cs
│ │ ├── JmesPathRawStringTest.cs
│ │ ├── JmesPathRootNodeExpressionTest.cs
│ │ ├── JmesPathSliceExpressionTest.cs
│ │ └── JmesPathSubExpressionTest.cs
│ ├── Functions
│ │ ├── ContainsFunctionTest.cs
│ │ ├── JmesCurrentNodeTest.cs
│ │ └── ToNumberFunctionTest.cs
│ ├── jmespathnet.tests.csproj
│ ├── jmespath.tests.xproj.user
│ ├── Parser
│ │ ├── AndExpressionTest.cs
│ │ ├── CurrentNodeTest.cs
│ │ ├── FilterTest.cs
│ │ ├── FlattenTest.cs
│ │ ├── FunctionTest.cs
│ │ ├── HashWildcardTest.cs
│ │ ├── IdentifierTest.cs
│ │ ├── IndexTest.cs
│ │ ├── ListWildcardTest.cs
│ │ ├── LiteralTest.cs
│ │ ├── MultiSelectHashTest.cs
│ │ ├── MultiSelectListTest.cs
│ │ ├── OrExpressionTest.cs
│ │ ├── ParserTestBase.cs
│ │ ├── PipeExpressionTest.cs
│ │ ├── RawStringTest.cs
│ │ ├── SliceExpressionTest.cs
│ │ └── SubExpressionTest.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RegexTest.cs
│ └── Utils
│ ├── StringFunctionsTest.cs
│ ├── StringUtilTest.cs
│ └── TextTest.cs
└── tools
├── jmespathnet.compliance
│ ├── AssemblyQualifiedNameParser.cs
│ ├── CommandLine.cs
│ ├── Compliance.cs
│ ├── ComplianceReport.cs
│ ├── ComplianceResult.cs
│ ├── ComplianceSummary.cs
│ ├── ConsoleEx.cs
│ ├── jmespath.compliance.xproj.user
│ ├── jmespathnet.compliance.csproj
│ ├── jmespath.test
│ ├── Options.cs
│ ├── Program.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ └── launchSettings.json
│ └── regression
│ ├── flatten_operator.json
│ ├── number_float.json
│ ├── number_int64.json
│ └── string_comparisons.json
└── jpnet
├── jpnet.csproj
└── Program.cs
30 directories, 225 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论