stripe-dotnet icon indicating copy to clipboard operation
stripe-dotnet copied to clipboard

Support JSON serialization with System.Text.Json

Open hootanht opened this issue 1 year ago • 2 comments
trafficstars

Fixes #2495

Add support for JSON serialization with System.Text.Json.

  • Add JsonSerializer interface and implement NewtonsoftJsonSerializer and SystemTextJsonSerializer classes in src/Stripe.net/Infrastructure/JsonSerializer.cs.
  • Update StripeEntity class in src/Stripe.net/Entities/_base/StripeEntity.cs to use the JsonSerializer interface for ToJson and FromJson methods.
  • Replace Newtonsoft.Json attributes with System.Text.Json attributes in src/Stripe.net/Entities/Customers/Customer.cs, src/Stripe.net/Entities/_common/Address.cs, src/Stripe.net/Entities/_common/AddressJapan.cs, src/Stripe.net/Entities/_common/Shipping.cs, src/Stripe.net/Entities/AccountLinks/AccountLink.cs, and src/Stripe.net/Entities/Accounts/Account.cs.
  • Add conditional compilation to use appropriate attributes based on the selected JSON serializer in the above files.

hootanht avatar Sep 13 '24 23:09 hootanht

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Sep 13 '24 23:09 CLAassistant

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

CLAassistant avatar Sep 13 '24 23:09 CLAassistant

@hootanht Thank you submitting this PR! Supporting System.Text.Json as an alternative to Newtonsoft is on our to-do list for this quarter, and I'd love to work with you on getting this landed. We have a code generator that is responsible for generating some 500-odd files that I definitely don't want to ask you to manually update, and I want to be able to include this in such a way that one SDK will be compatible with users of both Newtonsoft and System.Text.Json. Let me review your changes and see how we can incorporate them into our code generation infrastructure, make sure it won't break existing users, and then I'll plan to push updates right back to this branch/PR. Sound good?

jar-stripe avatar Oct 08 '24 20:10 jar-stripe

@hootanht Thank you submitting this PR! Supporting System.Text.Json as an alternative to Newtonsoft is on our to-do list for this quarter, and I'd love to work with you on getting this landed. We have a code generator that is responsible for generating some 500-odd files that I definitely don't want to ask you to manually update, and I want to be able to include this in such a way that one SDK will be compatible with users of both Newtonsoft and System.Text.Json. Let me review your changes and see how we can incorporate them into our code generation infrastructure, make sure it won't break existing users, and then I'll plan to push updates right back to this branch/PR. Sound good?

Awesome 👌

hootanht avatar Oct 08 '24 20:10 hootanht

Hi @hootanht ! Just a quick update here; I'm actually considering a more pared down approach here, to reduce the blast zone of a change while still solving the original ticket. I left a comment over on the issue: https://github.com/stripe/stripe-dotnet/issues/2495#issuecomment-2468667732, mind giving it a read and chiming in there? Thanks!

jar-stripe avatar Nov 11 '24 17:11 jar-stripe

Thanks a lot

hootanht avatar Nov 11 '24 19:11 hootanht

Sure thing! And if that doesn't completely work for your use case we can definitely revisit this here. Thanks again!

jar-stripe avatar Nov 11 '24 19:11 jar-stripe