Fixing Json.GetValue()
This commit is contained in:
@@ -146,13 +146,26 @@ namespace Newtonsoft.Json
|
|||||||
if (lvlObj == null)
|
if (lvlObj == null)
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
|
|
||||||
lvlObj = lvlObj[level];
|
string lvl = level;
|
||||||
|
if (lvlObj.Type == JTokenType.Object)
|
||||||
|
{
|
||||||
|
foreach (var prop in ((JObject)lvlObj).Properties())
|
||||||
|
{
|
||||||
|
if (prop.Name.Equals(lvl, System.StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
lvl = prop.Name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lvlObj = lvlObj[lvl];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lvlObj == null)
|
if (lvlObj == null)
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
|
|
||||||
return DeepConvert.ChangeType<T>(lvlObj is JValue ? ((JValue)lvlObj).Value : lvlObj.Value<object>());
|
return DeepConvert.ChangeType<T>(lvlObj is JValue lvlValue ? lvlValue.Value : lvlObj.Value<object>());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -5,10 +5,18 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Upcoming](https://git.am-wd.de/AM.WD/common/compare/v1.11.0...main) - 0000-00-00
|
## [Upcoming](https://git.am-wd.de/AM.WD/common/compare/v1.11.1...main) - 0000-00-00
|
||||||
|
|
||||||
_no changes yet_
|
_no changes yet_
|
||||||
|
|
||||||
|
|
||||||
|
## [v1.11.1](https://git.am-wd.de/AM.WD/common/compare/v1.11.0...v1.11.1) - 2023-05-11
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- `JsonExtensions.GetValue<T>()` now is case insensitive and detects the correct property name of a `JObject`.
|
||||||
|
|
||||||
|
|
||||||
## [v1.11.0](https://git.am-wd.de/AM.WD/common/compare/v1.10.0...v1.11.0) - 2023-03-29
|
## [v1.11.0](https://git.am-wd.de/AM.WD/common/compare/v1.10.0...v1.11.0) - 2023-03-29
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ namespace UnitTests.Common.Extensions
|
|||||||
// act
|
// act
|
||||||
string topLevelString = jObj.GetValue<string>("stringValue");
|
string topLevelString = jObj.GetValue<string>("stringValue");
|
||||||
decimal topLevelDecimal = jObj.GetValue<decimal>("decimalValue");
|
decimal topLevelDecimal = jObj.GetValue<decimal>("decimalValue");
|
||||||
int subLevelInteger = jObj.GetValue<int>("object:integerValue");
|
int subLevelInteger = jObj.GetValue<int>("object:IntegerValue");
|
||||||
string subLevelString = jObj.GetValue<string>("object:stringValue");
|
string subLevelString = jObj.GetValue<string>("object:stringValue");
|
||||||
|
|
||||||
string notExistingOnTopLevel = jObj.GetValue<string>("fancyValue");
|
string notExistingOnTopLevel = jObj.GetValue<string>("fancyValue");
|
||||||
@@ -288,7 +288,7 @@ namespace UnitTests.Common.Extensions
|
|||||||
// act
|
// act
|
||||||
string topLevelString = jObj.GetValue("stringValue", "Test String");
|
string topLevelString = jObj.GetValue("stringValue", "Test String");
|
||||||
decimal topLevelDecimal = jObj.GetValue("decimalValue", 13.24m);
|
decimal topLevelDecimal = jObj.GetValue("decimalValue", 13.24m);
|
||||||
int subLevelInteger = jObj.GetValue("object:integerValue", 55);
|
int subLevelInteger = jObj.GetValue("object:IntegerValue", 55);
|
||||||
string subLevelString = jObj.GetValue("object:stringValue", "Yeah!");
|
string subLevelString = jObj.GetValue("object:stringValue", "Yeah!");
|
||||||
|
|
||||||
string notExistingOnTopLevel = jObj.GetValue("fancyValue", "Party!");
|
string notExistingOnTopLevel = jObj.GetValue("fancyValue", "Party!");
|
||||||
|
|||||||
Reference in New Issue
Block a user