Skip to content

Commit 1275502

Browse files
committed
Removing custom DictionaryJsonConverter
1 parent df9657f commit 1275502

File tree

4 files changed

+42
-170
lines changed

4 files changed

+42
-170
lines changed

src/WebJobs.Script/Description/Node/NodeFunctionInvoker.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Collections.ObjectModel;
7+
using System.Dynamic;
78
using System.Globalization;
89
using System.IO;
910
using System.Linq;
@@ -25,7 +26,6 @@ public class NodeFunctionInvoker : FunctionInvokerBase
2526
private readonly Collection<FunctionBinding> _inputBindings;
2627
private readonly Collection<FunctionBinding> _outputBindings;
2728
private readonly string _script;
28-
private static readonly DictionaryJsonConverter _dictionaryJsonConverter = new DictionaryJsonConverter();
2929
private readonly BindingMetadata _trigger;
3030
private readonly string _entryPoint;
3131

@@ -536,16 +536,16 @@ private static bool TryDeserializeJsonObjectOrArray(string json, out object resu
536536
result = null;
537537

538538
// if the input is json, try converting to an object or array
539-
Dictionary<string, object> jsonObject;
540-
Dictionary<string, object>[] jsonObjectArray;
541-
if (TryDeserializeJson(json, out jsonObject))
539+
ExpandoObject obj;
540+
ExpandoObject[] objArray;
541+
if (TryDeserializeJson(json, out obj))
542542
{
543-
result = jsonObject;
543+
result = obj;
544544
return true;
545545
}
546-
else if (TryDeserializeJson(json, out jsonObjectArray))
546+
else if (TryDeserializeJson(json, out objArray))
547547
{
548-
result = jsonObjectArray;
548+
result = objArray;
549549
return true;
550550
}
551551

@@ -558,7 +558,7 @@ private static bool TryDeserializeJson<TResult>(string json, out TResult result)
558558

559559
try
560560
{
561-
result = JsonConvert.DeserializeObject<TResult>(json, _dictionaryJsonConverter);
561+
result = JsonConvert.DeserializeObject<TResult>(json);
562562
return true;
563563
}
564564
catch

src/WebJobs.Script/DictionaryJsonConverter.cs

Lines changed: 0 additions & 155 deletions
This file was deleted.

src/WebJobs.Script/WebJobs.Script.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,6 @@
428428
<Compile Include="Description\Script\ScriptFunctionInvoker.cs" />
429429
<Compile Include="Description\Node\NodeFunctionDescriptorProvider.cs" />
430430
<Compile Include="Description\Node\NodeFunctionInvoker.cs" />
431-
<Compile Include="DictionaryJsonConverter.cs" />
432431
<Compile Include="Extensions\ActionExtensions.cs" />
433432
<Compile Include="Diagnostics\FileTraceWriter.cs" />
434433
<Compile Include="Host\ScriptHostState.cs" />

test/WebJobs.Script.Tests/NodeFunctionInvokerTests.cs

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4-
using System;
54
using System.Collections.Generic;
6-
using System.Dynamic;
7-
using System.Threading.Tasks;
5+
using System.Linq;
86
using Microsoft.Azure.WebJobs.Script.Description;
7+
using Newtonsoft.Json.Linq;
98
using Xunit;
109

1110
namespace Microsoft.Azure.WebJobs.Script.Tests
@@ -27,14 +26,43 @@ public void TryConvertJson_ArrayOfJsonObjectStrings()
2726
Assert.True(didConvert);
2827

2928
object[] objects = result as object[];
30-
Dictionary<string, object> obj = (Dictionary<string, object>)objects[0];
29+
IDictionary<string, object> obj = (IDictionary<string, object>)objects[0];
3130
Assert.Equal("Larry", obj["name"]);
3231

33-
obj = (Dictionary<string, object>)objects[1];
32+
obj = (IDictionary<string, object>)objects[1];
3433
Assert.Equal("Moe", obj["name"]);
3534

36-
obj = (Dictionary<string, object>)objects[2];
35+
obj = (IDictionary<string, object>)objects[2];
3736
Assert.Equal("Curly", obj["name"]);
3837
}
38+
39+
[Fact]
40+
public void TryConvertJson_JsonObjectString()
41+
{
42+
JObject child = new JObject
43+
{
44+
{ "Name", "Mary" },
45+
{ "Location", "Seattle" },
46+
{ "Age", 5 }
47+
};
48+
49+
JObject parent = new JObject
50+
{
51+
{ "Name", "Bob" },
52+
{ "Location", "Seattle" },
53+
{ "Age", 40 },
54+
{ "Children", new JArray(child) }
55+
};
56+
57+
object result;
58+
string input = parent.ToString();
59+
bool didConvert = NodeFunctionInvoker.TryConvertJson(input, out result);
60+
Assert.True(didConvert);
61+
62+
var resultDictionary = (IDictionary<string, object>)result;
63+
var resultChildren = (IEnumerable<object>)resultDictionary["Children"];
64+
var resultChild = (IDictionary<string, object>)resultChildren.ElementAt(0);
65+
Assert.Equal(5, (long)resultChild["Age"]);
66+
}
3967
}
4068
}

0 commit comments

Comments
 (0)